【发布时间】:2017-03-22 17:05:36
【问题描述】:
我的 Json 数据包含以下(但更大)
{
"realms": [
{
"status": true,
"battlegroup": "Shadowburn",
"name": "Zuluhed",
"locale": "en_US",
"queue": false,
"connected_realms": [
"ursin",
"andorhal",
"scilla",
"zuluhed"
],
"timezone": "America/New_York",
"type": "pvp",
"slug": "zuluhed",
"population": "medium"
}
]
}
这是我的代码片段,应该将数据放入 db 文件 ( json 数据被加载到数据变量中(data = json.loads(response)) )
db=sqlite3.connect("temp.db")
c=db.cursor()
for record in data['realms']:
c.execute('INSERT INTO realms (status, name, queue, timezone, type, population) VALUES (?,?,?,?,?,?)', (record['status'], record['name'],record['queue'], record['timezone'],record['type'], record['population']))
运行脚本运行没有错误,但检查表的内容没有任何内容
# sqlite3 temp.db
SQLite version 3.8.2 2013-12-06 14:53:30
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> SELECT * FROM "realms";
sqlite>
sqlite> .tables
realms
sqlite>
我是 json 和 sqlite 的新手,所以我认为我做错了什么。 谢谢
【问题讨论】:
-
后来你做了
db.commit()吗?在您提交更改之前,光标不会更新表格。 -
请将您的原始程序缩减为能证明问题的最短程序和数据集。请edit您的帖子并复制粘贴整个短程序和数据集,以及预期和实际输出。请参阅minimal reproducible example 了解更多信息。
-
您没有描述您在何处/如何调用
create table realms,并且该表没有出现在您检查的temp.db中。您的 Python 写入的temp.db可能与您手动检查的temp.db位于不同的目录中。你能在你的 Python 程序中print(os.getcwd())吗? -
@roganjosh 这正是我忘记的,谢谢,如果您发表完整评论,请将其标记为答案。
-
@Robᵩ 请在请求您请求的信息之前再次阅读该问题,1) 由于所有数据都与 a] 我写给 db b 的内容有关,因此无法进一步减少问题把它写到 db 2) 我如何调用 temp.db 中的表并不重要,因为表存在 - 在 sqlite3 命令和子命令输出中看到,我不确定你是否读过这个问题,但表存在,如 sqlite 所见> .tables 领域