我有这样的代码来的raw_input写入文件:尝试解析列表中的JSON字典创建SQLite数据库
import json
a = raw_input("time meds taken?: format '@12:00' ")
b = raw_input("had food at that point?: format '#0/1' ")
ax = {"meds": a}
bx = {"food": b}
with open("chance1.json", "a") as f:
json.dump([ax, bx], f)
f.close()
我再这样结束了:
[{"meds": "11:00"}, {"food": "0"}, {"meds": "12:45"}, {"food": "0"}, {"meds": "10:45"}, {"food": "0"}]
然后我需要得到将上面的数据导入到sqlite浏览器中。我目前使用下面的代码:
import json
import sqlite3
conn = sqlite3.connect ('meds.sqlite')
cur = conn.cursor()
cur.executescript('''
DROP TABLE IF EXISTS Meds;
DROP TABLE IF EXISTS Food;
CREATE TABLE Meds (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
time TEXT UNIQUE
);
CREATE TABLE Food (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
meds_id INTEGER,
status TEXT UNIQUE
);
''')
fname = raw_input('Enter file name: ')
if (len(fname) < 1) : fname = 'chance1.json'
str_data = open(fname).read()
json_data = json.loads(str_data)
for entry in json_data:
time = entry["meds"]
status = entry["food"]
print time, status'
但是,我最终追溯到KeyError: "food"
。任何建议如何解决这个问题,请?请注意代码没有完成,因为我无法超越这部分! (这个文件有可能是Unicode文件,因为我打印的条目在每次输入前都会得到'u')。
尝试在您的循环中打印条目 – Benjamin
当我在循环中打印条目时,我得到: {u'meds':u'11:00'}等等每个条目 – NamedN