Json数据未写入SQLite DB-Python

Json数据未写入SQLite DB-Python,python,json,sqlite,Python,Json,Sqlite,我的Json数据包含以下内容(但更大) 这是我的代码,snipet应该把数据放到db文件中 (json数据被加载到数据变量中(data=json.loads(response))) 运行脚本时不会出现错误,但签入表的内容时没有任何错误 # sqlite3 temp.db SQLite version 3.8.2 2013-12-06 14:53:30 Enter ".help" for instructions Enter SQL statements terminated with a ";"

我的Json数据包含以下内容(但更大)

这是我的代码,snipet应该把数据放到db文件中 (json数据被加载到数据变量中(data=json.loads(response)))

运行脚本时不会出现错误,但签入表的内容时没有任何错误

# 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
db=sqlite3.connect(“temp.db”)
),因此您需要在
INSERT
命令之后的某个地方使用
db.commit()

您通过
游标对数据库所做的任何更新在提交之前都不会生效。在您的情况下,与数据库的连接被称为
db
db=sqlite3.connect(“temp.db”)
),因此您需要在
INSERT
命令之后的某个地方使用
db.commit()

您可以将整个json转储到sqlite,然后从db中提取并执行任何您想要的操作

db=sqlite3.connect("temp.db")
cur = db.cursor()
sql_create_data_table= """CREATE TABLE IF NOT EXISTS myrealms (
                                id integer PRIMARY KEY AUTOINCREMENT,
                                data json NOT NULL
                            ); """
cur.execute(sql_create_data_table)
插入:

sql = '''INSERT INTO myrealms(data) VALUES(json('%s'))'''%json.dumps(response)
cur.execute(sql)
db.commit()
正在从数据库获取数据:

cur.execute("SELECT * FROM myrealms")
rows = cur.fetchall()
print(rows)

您可以将整个json转储到sqlite,然后从db中提取并执行任何您想要的操作

db=sqlite3.connect("temp.db")
cur = db.cursor()
sql_create_data_table= """CREATE TABLE IF NOT EXISTS myrealms (
                                id integer PRIMARY KEY AUTOINCREMENT,
                                data json NOT NULL
                            ); """
cur.execute(sql_create_data_table)
插入:

sql = '''INSERT INTO myrealms(data) VALUES(json('%s'))'''%json.dumps(response)
cur.execute(sql)
db.commit()
正在从数据库获取数据:

cur.execute("SELECT * FROM myrealms")
rows = cur.fetchall()
print(rows)

之后是否执行了
db.commit()
?在您提交更改之前,光标不会更新表。请将原始程序缩减为演示此问题的最短程序和数据集。请张贴并复制粘贴整个简短程序和数据集,以及预期和实际输出。有关更多信息,请参阅。您没有描述在何处/如何调用
创建表域
,并且该表也没有出现在您检查的
临时数据库
中。Python写入的
temp.db
目录可能与手工检查的
temp.db
目录不同。你能在你的Python程序中打印(os.getcwd())
吗?@roganjosh这正是我忘记的。谢谢你,如果你发表完整的评论,我会把它作为答案。@Robᵩ 在请求您所请求的信息之前,请再次阅读该问题,1)不可能进一步减少该问题,因为所有数据都与a]我向db写入了什么b]我如何写入db 2)我如何调用temp.db中的表并不重要,因为表存在-见sqlite3命令和子命令输出,我不确定您是否阅读了该问题,但该表已存在,如sqlite>.tables realmsDid所示。之后您会做什么
db.commit()
?在您提交更改之前,光标不会更新表。请将原始程序缩减为演示此问题的最短程序和数据集。请张贴并复制粘贴整个简短程序和数据集,以及预期和实际输出。有关更多信息,请参阅。您没有描述在何处/如何调用
创建表域
,并且该表也没有出现在您检查的
临时数据库
中。Python写入的
temp.db
目录可能与手工检查的
temp.db
目录不同。你能在你的Python程序中打印(os.getcwd())吗?@roganjosh这正是我忘记的。谢谢你,如果你发表完整的评论,我会把它作为答案。@Robᵩ 在请求您所请求的信息之前,请再次阅读该问题,1)不可能进一步减少该问题,因为所有数据都与a]我向db写入了什么b]我如何写入db 2)我如何调用temp.db中的表并不重要,因为表存在-见sqlite3命令和子命令输出,我不确定您是否阅读了该问题,但该表存在,正如sqlite>.tables realms所示