練習 python之數據庫增刪改查
阿新 • • 發佈:2019-04-24
模糊 re.search 創建 per font check 顯示 range screen
# 文件存儲時可以這樣表示
#
# id,name,age,phone,dept,enroll_date
# 1,Alex Li,22,13651054608,IT,2013-04-01
# 2,Jack Wang,28,13451024608,HR,2015-01-07
# 3,Rain Wang,21,13451054608,IT,2017-04-01
# 4,Mack Qiao,44,15653354208,Sales,2016-02-01
# 5,Rachel Chen,23,13351024606,IT,2013-03-16
# 6,Eric Liu,19,18531054602,Marketing,2012-12-01
# 7,Chao Zhang,21,13235324334,Administration,2011-08-08# 8,Kevin Chen,22,13151054603,Sales,2013-04-01
# 9,Shit Wen,20,13351024602,IT,2017-07-03
# 10,Shanshan Du,26,13698424612,Operation,2017-07-02
# 可進行模糊查詢,語法至少支持下面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做唯一鍵(即不允許表裏有手機號重復的情況),staff_id需自增語法:
#
# add to staff_table values Alex Li,25,134435344,IT,2015-10-29
# 可刪除指定員工信息紀錄,輸入員工id,即可刪除語法:
#
# del from staff_table where id = 3
# 可修改員工信息,語法如下:
#
# update staff_table set dept = Market where dept = IT #把所有dept=IT的紀錄的dept改成Market
# update staff_table set age = 25 where name = Alex Li #把name=Alex Li的紀錄的年齡改成25# 以上每條語名執行完畢後,要顯示這條語句影響了多少條紀錄。比如查詢語句就顯示查詢出了多少條、修改語句就顯示修改了多少條等。
# 註意:以上需求,要充分使用函數,請盡你的最大限度來減少重復代碼!
版本:python3.6
新建主體函數 databases.py
import re import select_mo import del_mo import update_mo #operation = input(‘請輸入你要操作的指令 :‘).lower() operation = ‘select name,age , phone from where age < 23‘ SELECT = re.search(‘^select‘, operation) DEL = re.search(‘^del‘, operation) UPDATE = re.search(‘^update‘, operation) data = {‘id‘: 0, ‘name‘: 1, ‘age‘: 2, ‘phone‘: 3, ‘dept‘: 4, ‘enroll_date‘: 5} if SELECT: select_mo.SELECT(operation, data) elif DEL: del_mo.DEL(operation, data) elif UPDATE: update_mo.UPDATE(operation, data) else: print(‘你輸入的指令不正確‘)
新建查的腳本:select_mo.py
def SELECT(operation, data): # select name,age from where age > 22 # select * from where dept = "IT" # select * from where enroll_date like "2013" # 1,Alex Li,22,13651054608,IT,2013-04-01 def print_name(): name = ‘‘ for SCREEN in screen_list: name += ‘ ‘ + data_list[data[SCREEN]] print(name) check, term = operation.split(‘from‘) screen = check.replace(‘select‘, ‘‘) if ‘where‘ in term: term_total = term.replace(‘where‘, ‘‘) if ‘>‘ in term_total: term, tail = term_total.split(‘>‘) elif ‘<‘ in term_total: term, tail = term_total.split(‘<‘) elif ‘=‘ in term_total: term, tail = term_total.split(‘=‘) tail = tail.replace(‘"‘,‘‘) elif ‘like‘ in term_total: term, tail = term_total.split(‘like‘) tail = tail.replace(‘"‘, ‘‘) else: exit(‘沒有條件‘) term = term.strip() tail = tail.strip() screen_list = [] if ‘*‘ in screen: screen_list = list(data) elif ‘,‘ in screen: screen_list = screen.split(‘,‘) for i in range(len(screen_list)): screen_list[i] = screen_list[i].strip() else: screen_list.append(screen.strip()) with open(‘database.txt‘) as DATA: for i in DATA: data_list = [] data_list = i.split(‘,‘) for i in range(len(data_list)): data_list[i] = data_list[i].strip() #print(data_list) if ‘>‘ in term_total: if int(data_list[data[term]]) > int(tail): print_name() elif ‘<‘ in term_total: if int(data_list[data[term]]) < int(tail): print_name() elif ‘=‘ in term_total and not data_list[data[term]].isdigit(): if data_list[data[term]] == tail: print_name() elif ‘=‘ in term_total and data_list[data[term]].isdigit(): if int(data_list[data[term]]) == int(tail): print_name() elif ‘like‘ in term_total: if tail in data_list[data[term]]: print_name() if __name__ == ‘__main__‘ : data = {‘id‘: 0, ‘name‘: 1, ‘age‘: 2, ‘phone‘: 3, ‘dept‘: 4, ‘enroll_date‘: 5} operation = ‘select * from where enroll_date like "2013"‘ SELECT(operation, data)
練習 python之數據庫增刪改查