我想根據(jù)用戶的輸入使用 JSON 創(chuàng)建數(shù)據(jù)庫。我已經(jīng)編寫了這段代碼,但它用新數(shù)據(jù)替換了整個文件,并且不更新現(xiàn)有的 JSON 文件。文件database.json給出的輸出為{"Employee ID": "ID2", "Employee Name": "Friendrich", "Domain": "Engineering", "Employee Type": "Permanent", "Start Date": "01.02.2020", "End Date": "28.02.2021"}import jsons_id = input('employeeID')s_name = input('employeeName')s_domain = input('domain')s_type = input('employeeType')s_from = input('start-date')s_until = input('end-date')database = { 'Employee ID' : s_id, 'Employee Name' : s_name, 'Domain' : s_domain, 'Employee Type' : s_type, 'Start Date' : s_from, 'End Date' : s_until }with open('database.json') as json_file: data = json.load(json_file)data.update(database)with open('database.json', 'w') as json_file: json.dump(database, json_file)使用新輸入時,json 文件應(yīng)將數(shù)據(jù)添加到現(xiàn)有文件中。所以輸出應(yīng)該是{"Employee ID": "new ID", "Employee Name": "input name", "Domain": "input domain", "Employee Type": "input type", "Start Date": "input date", "End Date": "input date"}, {"Employee ID": "ID2", "Employee Name": "Friendrich", "Domain": "Engineering", "Employee Type": "Permanent", "Start Date": "01.02.2020", "End Date": "28.02.2021"}, 我創(chuàng)建這個數(shù)據(jù)庫是為了找到具有特定過濾器的所有員工。假設(shè)所有具有工程領(lǐng)域的員工。使用 JSON 作為數(shù)據(jù)庫是一個好習(xí)慣嗎?
2 回答

蕪湖不蕪
TA貢獻(xiàn)1796條經(jīng)驗 獲得超7個贊
每次保存數(shù)據(jù)時都會截斷文件。
使用“?a?”而不是“?w?”作為打開模式。
代替
with?open('database.json',?'w')?as?json_file: ????json.dump(database,?json_file)
和
with?open('database.json',?'a')?as?json_file: ????json.dump(database,?json_file)

慕尼黑5688855
TA貢獻(xiàn)1848條經(jīng)驗 獲得超2個贊
關(guān)于你的問題,使用 sqlite3 (加上 python)來更新數(shù)據(jù)庫更容易。一探究竟!
添加回答
舉報
0/150
提交
取消