module2-员工信息表

#!/usr/local/bin/python3
# -*- coding:utf-8 -*-
# AUTHOR:Howard hao
import os,json,re

# 取数据库路径
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DB_DIR = os.path.join(BASE_DIR,‘db‘)
DB_FILE = os.path.join(DB_DIR,‘form_info‘)

# 读取json数据到字典
f = open(DB_FILE,‘r‘,encoding=‘utf-8‘)
data = json.loads(f.read())
f.close()

SQL = input(‘请输入sql语句:‘)

# 查询操作判断
RE = re.search(‘^\s*select\s+name,age\s+from\s+staff_table\s+where\s+age\s+>\s+(\d+)\s*$‘,SQL)
RE1 = re.search("^\S*select\s+[*]\s+from\s+staff_table\s+where\s+dept\s*=\s*‘?\"?(\w+)‘?\"?\s*$",SQL)
RE3 = re.search("^\s*select\s+[*]\s+from\s+staff_table\s+where\s+enroll_date\s+like\s+‘?\"?(\w+)‘?\"?\s*$",SQL)
# 插入操作判断
RE4 = re.search("^\s*insert\s+into\s+staff_table\(\s*name\s*,\s*age\s*,\s*phone\s*,\s*dept\s*,\s*enroll_date\s*\)\s+values\(\s*‘?([^‘]+)‘?\s*,\s*‘?([^‘]+)‘?\s*,\s*‘?([^‘]+)‘?\s*,\s*‘?([^‘]+)‘?\s*,\s*‘?([^‘]+)‘?\s*\)$",SQL)
# 删除操作判断
RE5 = re.search(‘^\s*([0-9]+)\s*$‘,SQL)
# 修改操作判断
RE6 = re.search("^\s*UPDATE\s+staff_table\s+SET\s+dept\s*=\s*\"?\‘?(\w+)\‘?\"?\s+WHERE\s+dept\s*=\s*\"?‘?(\w+)‘?\"?\s*$",SQL)

# 数据库处理
if RE:
    print(‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*6 + ‘+‘)
    print(‘|‘ + ‘NAME‘.ljust(10) + ‘|‘ + ‘AGE‘.ljust(6) + ‘|‘)
    print(‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 6 + ‘+‘)
    count = 0
    for i in data.keys():
        if int(data[i][1]) >  int(RE.groups()[-1]):
            count += 1
            print(‘|‘ + str(data[i][0]).ljust(10) + ‘|‘ + str(data[i][1]).ljust(6) + ‘|‘)
            print(‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 6 + ‘+‘)
    else:
        print(‘%d row(s) returned‘ %count)

if RE1:
    print(‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*5 + ‘+‘ + ‘-‘*15 + ‘+‘ + ‘-‘*10 + ‘+‘ + ‘—‘*13 + ‘+‘)
    print(‘|‘ + ‘staff_id‘.ljust(10) + ‘|‘ + ‘name‘.ljust(10) + ‘|‘ + ‘age‘.ljust(5) + ‘|‘ + ‘phone‘.ljust(15) + ‘|‘ + ‘dept‘.ljust(10) + ‘|‘ + ‘enroll_date‘.ljust(13) +   ‘|‘)
    print(‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*5 + ‘+‘ + ‘-‘*15 + ‘+‘ + ‘-‘*10 + ‘+‘ + ‘—‘*13 + ‘+‘)
    count = 0
    for i in data.keys():
         if data[i][3] == RE1.groups()[-1]:
             count += 1
             print(‘|‘ + i.ljust(10)  + ‘|‘ + str(data[i][0]).ljust(10) + ‘|‘ + str(data[i][1]).ljust(5) + ‘|‘ + str(data[i][2]).ljust(15) + ‘|‘ + str(data[i][3]).ljust(10) + ‘|‘ + str(data[i][4]).ljust(13) + ‘|‘)
             print(‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*10 + ‘+‘ + ‘-‘*5 + ‘+‘ + ‘-‘*15 + ‘+‘ + ‘-‘*10 + ‘+‘ + ‘—‘*13 + ‘+‘)
    else:
        print(‘%d row(s) returned‘ % count)

if RE3:
    print(‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 5 + ‘+‘ + ‘-‘ * 15 + ‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘—‘ * 13 + ‘+‘)
    print(‘|‘ + ‘staff_id‘.ljust(10) + ‘|‘ + ‘name‘.ljust(10) + ‘|‘ + ‘age‘.ljust(5) + ‘|‘ + ‘phone‘.ljust(15) + ‘|‘ + ‘dept‘.ljust(10) + ‘|‘ + ‘enroll_date‘.ljust(13) + ‘|‘)
    print(‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 5 + ‘+‘ + ‘-‘ * 15 + ‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘—‘ * 13 + ‘+‘)
    count = 0
    for i in data.keys():
        if  RE3.groups()[-1] in data[i][4]:
            count += 1
            print(‘|‘ + i.ljust(10) + ‘|‘ + str(data[i][0]).ljust(10) + ‘|‘ + str(data[i][1]).ljust(5) + ‘|‘ + str(data[i][2]).ljust(15) + ‘|‘ + str(data[i][3]).ljust(10) + ‘|‘ + str(data[i][4]).ljust(13) + ‘|‘)
            print(‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘-‘ * 5 + ‘+‘ + ‘-‘ * 15 + ‘+‘ + ‘-‘ * 10 + ‘+‘ + ‘—‘ * 13 + ‘+‘)
    else:
        print(‘%d row(s) returned‘ % count)

if RE4:
    for i in data.keys():
        if  RE4.groups()[2] == str(data[i][2]):
            print("Error Code: 1062. Duplicate entry ‘4‘ for key ‘PRIMARY‘")
            exit()
    id4 = 1
    while str(id4) in data.keys():
        id4 += 1
    data[id4]=[RE4.groups()[0],RE4.groups()[1],RE4.groups()[2],RE4.groups()[3],RE4.groups()[4]]
    f1 = open(DB_FILE, ‘w‘, encoding=‘utf-8‘)
    f1.write(json.dumps(data))
    f1.close()
if RE5:
    id5 = RE5.group()
    data.pop(id5)
    f2 = open(DB_FILE, ‘w‘, encoding=‘utf-8‘)
    f2.write(json.dumps(data))
    f2.close()
    print(‘staff_id 为 %s 员工信息删除成功!‘ %id5)
if RE6:
    after_update = RE6.groups()[0]
    before_update = RE6.groups()[1]
    for i in data.keys():
        if  data[i][3] == before_update:
            data[i][3] = after_update
    f3 = open(DB_FILE, ‘w‘, encoding=‘utf-8‘)
    f3.write(json.dumps(data))
    f3.close()
    print(‘修改成功‘)
时间: 2024-10-12 20:39:29

module2-员工信息表的相关文章

Python开发【第xxx篇】函数练习题-----员工信息表

文件存储格式如下: id,name,age,phone,job 1,Alex,22,13651054608,IT 2,Egon,23,13304320533,Tearcher 3,nezha,25,1333235322,IT 现在需要对这个员工信息文件进行增删改查. 基础必做: a.可以进行查询,支持三种语法: select 列名1,列名2,- where 列名条件 支持:大于小于等于,还要支持模糊查找. 示例: select name,age where age>22   #> < s

Python 基础 - Day 4 Assignment - 员工信息表程序

作业要求及初步思路 员工信息表程序,实现增删改查操作: ① 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" select * from staff_table where enroll_date like "2013"② 解决方案: sql语句的python解析问题,即将用户输入的sql

打印简单公司员工信息表

要求,输入name不为空,输入次数最多3次,3次后跳出程序: 知识点: raw_input str转int whil if elif else continue break for 导入模块 引用变量值 格式化输出 vim #!/usr/bin/env python import sys user_name = "carson" this_year = 2014 counter  = 0 while True:     if counter < 3:         name =

python-作业:员工信息表

程序可实现以下功能:1.查询,输入select name,age from staff_table where age > 22,查询到符合要求的信息: 输入select * from staff_table where dept = "IT",查询到符合要求的信息: 输入select * from staff_table where enroll_date like "2013",查询到符合要求的信息.2.创建,输入insert Mickle,22,1365

L01-04:python查询员工信息表练习

#decoding=utf-8 '''编写可供用户查询的员工信息表! 1|用户认证    ID Name department phone    查询关键字:姓名''' import linecache input01=raw_input("pls write your name:") i=1 name=[] count = len(open('user.txt','rU').readlines()) while i<=count:         fline = linecac

Python下用List对员工信息表进行模糊匹配

#需求 用户可以模糊查询员工信息 显示匹配了多少条,匹配字符需要高亮度显示 #脚本内容 #!/usr/bin/env python #_*_ coding:utf-8 _*_ while True:         info = 'info.txt'         f = file(info)         search=raw_input('Please Engter You Search Info: ')         for line in f.readlines():       

员工信息表作业

# 只实现作业要求的查询功能 # 增加,删除,修改功能为选做题 # 创建员工信息表 # 用户输入查询命令 # 分析用户输入的命令,从命令中提取需要查询的关键字 # 根据关键字来查询内容并输出 staff_table=r'F:\python文件\day21生成器\员工信息表.txt' def select(cmd1): #查询功能 with open(staff_table) as f: path=f.readlines() #读出多行赋值给path staff_l=[{ 'staff_id':

无废话ExtJs 入门教程十五[员工信息表Demo:AddUser]

无废话ExtJs 入门教程十五[员工信息表Demo:AddUser] extjs技术交流,欢迎加群(201926085) 前面我们共介绍过10种表单组件,这些组件是我们在开发过程中最经常用到的,所以一定要用到非常熟练才可以,今天我们会通过一个员工信息表实例,再把这些组件串一下. (1)TextField  (2)Botton  (3)NumberField (4)Hidden (5)DataFiedl (6)RadioGroup (7)CheckBoxGroup (8)Combobox (9)F

python Day 4 :员工信息表程序

员工信息表程序,实现增删改查操作: 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select  * from staff_table where dept = "IT" select  * from staff_table where enroll_date like "2013" 查到的信息,打印后,最后面还要显示查到的条数 可创建新员工纪录,以phone做唯一键,s

第四周作业 员工信息表程序

员工信息表程序,主要用到知识点: 1.文件的读写操作 2.程序目录规范化 3.不同目录间文件的调用 本周学习内容: 一.序列化和反序列化 序列化:字典等类型变成字符串存到内存. a.json.dumps(变量)(字典等简单类型的序列化): b.pickle.dumps(变量)  (只针对本语言的函数等所有类型的序列化) 反序列化:内存的字符串变成字典等类型读出来. a.可以用eval()针对字典类型: b.json.loads(f.read()): c.pickle.loads(f.read()