需求:
1.可进行模糊查询,语法至少支持下面3种:
1.select name,age from staff_table where age > 22
2.select * from staff_table where dept = IT
3.查到的信息,打印后,最后面还要显示查到的条数
2.可创建新员工纪录,以phone做唯一键,staff_id需自增
3.可删除指定员工信息纪录,输入员工id,即可删除
4.可修改员工信息,语法如下:
1.UPDATE staff_table SET dept= 无 where dept = IT
注意:请输入正确的语句进行查询,否则会报错。
实现代码如下:
1 #_*_coding:utf-8_*_ 2 import os 3 def fetch(data): 4 #查询语法一:select name,age from staff_table where age > 22 5 #查询语法二:select * from staff_table where dept = IT 6 data1 = data.split(" ") 7 directory = ["staff_id", "name", "age", "phone", "dept", "enroll-date"] 8 if data == ("select name,age from staff_table where age > %s" %(data1[7])): 9 with open("xinxi", encoding="utf-8") as f: 10 list = [] 11 list1 = [] 12 list2 = [] 13 for line in f: 14 i = line.strip().split(",") 15 w = i[1] 16 e = i[2] 17 a = [w, e] 18 if e > data1[7]: 19 list2.append(a) 20 for i in list2: 21 print(i) 22 print("查询到 %s 条符合的信息" %len(list2)) 23 else: 24 with open("xinxi", encoding="utf-8") as f: 25 list = [] 26 for line in f: 27 i = line.strip().split(",") 28 q = i[0] 29 w = i[1] 30 e = i[2] 31 r = i[3] 32 t = i[4] 33 y = i[5] 34 if data == ("select * from staff_table where %s = %s" % (data1[5], i[(directory.index(data1[5]))])): 35 list.append(i) 36 else: 37 continue 38 for j in list: 39 print('.'.join(j)) 40 print("查询到 %s 条符合的信息" %len(list)) 41 return 0 42 def add(data): 43 #添加语法: name,age,phone,dept,enroll-date (例如:孙凯,22,11111111111,IT,2016-12-12) 44 data1 = data.split(",") 45 f= open("xinxi",encoding="utf-8") 46 all_list = [] 47 list = [] 48 phone_list = [] 49 for line in f: 50 i = line.strip().split(",") 51 q = i[3] 52 phone_list.append(q) 53 54 if data1[2] in phone_list: 55 print("手机号已存在") 56 f.close() 57 else: 58 f1 = open("xinxi", "r+", encoding="utf-8") 59 for line in f1: 60 lines = line.strip().split(",") 61 # print(lines) 62 list.append(lines) 63 i = line.strip().split(",") 64 w = str(int(list[-1][0]) + 1) 65 data1.insert(0, w) 66 print(data1) 67 data1 = ','.join(data1) 68 f1.write("\n") 69 f1.write(data1) 70 f1.close() 71 print("添加成功!!!") 72 def remove(data): 73 #删除语法:delete from staff_table where staff_id = 12 74 data1 = data.split(" ") 75 if data == ("delete from staff_table where staff_id = %s" %data1[6]): 76 with open("xinxi", encoding="utf-8") as f: 77 list = [] 78 for line in f: 79 i = line.strip().split(",") 80 i1 = line.splitlines() 81 q = i[0] 82 if data1[6] == q: 83 i2 = ','.join(i1) 84 print(i2) 85 list.append(i) 86 a = i2 87 f = open("xinxi", encoding="utf-8") 88 f1 = open("back", "a+", encoding="utf-8") 89 for i in f: 90 if a in i: 91 i = i.replace(a, "").strip() 92 f1.write(i) 93 f1.flush() 94 f.close() 95 f1.close() 96 os.remove("xinxi") 97 os.rename("back","xinxi") 98 print("删除成功!!!") 99 return 100 def change(data): 101 #修改请输入(注意空格和没有引号):UPDATE staff_table SET dept = IT where dept = 运维 102 data1 = data.split(" ") 103 print(data1) 104 # a =','.join(data1[3]) 105 # print(a) 106 directory = ["staff_id", "name", "age", "phone", "dept", "enroll-date"] 107 var = int(directory.index(data1[3])) 108 with open("xinxi", encoding="utf-8") as f,\ 109 open("back","w",encoding="utf-8")as f1: 110 for line in f: 111 lines = line.strip() 112 print(lines) 113 if data1[5] in lines: 114 lines = lines.replace(data1[5],data1[9]) 115 f1.write(lines) 116 f1.write("\n") 117 f1.flush() 118 os.remove("xinxi") 119 os.rename("back","xinxi") 120 print("修改成功!!!") 121 122 if __name__ == "__main__": 123 msg = """ 124 1:查询 125 2:添加 126 3:删除 127 4:修改 128 5:退出 129 """ 130 msg_dict = { 131 "1": fetch, 132 "2": add, 133 "3": remove, 134 "4": change, 135 "5": exit, 136 } 137 while True: 138 print(msg) 139 choice = input("输入序号>>:") 140 if len(choice) == 0 or choice not in msg_dict: continue 141 if choice =='5':break 142 data = input("请输入数据>>:").strip() 143 msg_dict[choice](data)