使用json更新Python sqlite

使用json更新Python sqlite,python,sqlite,Python,Sqlite,我使用以下查询从sqlite数据集中更新列 rig_json = json.dumps(json.loads(f.read())) query = """UPDATE session_rigs SET rig = '{}' WHERE session = '{}'""".format(rig_json, session) rig列的数据类型是TEXT,因此我必须加载JSON文件并将其转换为字符串。但是这个查询给了我一些错误: sql

我使用以下查询从sqlite数据集中更新列

rig_json = json.dumps(json.loads(f.read()))
query = """UPDATE session_rigs SET rig = '{}'  WHERE session = '{}'""".format(rig_json, session)
rig
列的数据类型是
TEXT
,因此我必须加载JSON文件并将其转换为字符串。但是这个查询给了我一些错误:

sqlite3.OperationalError: near "purged_parameter": syntax error
我试过这样的方法:

query = """UPDATE session_rigs SET rig = '{}'  WHERE session = '{}'""".format({"a":"b"}, session)

而且效果很好。

您几乎肯定会遇到报价问题。字符串包含单引号,这会把事情搞砸。这就是为什么不应该使用Python字符串格式来构建查询。让SQLite来修复它

rig_json = f.read()
query = "UPDATE session_rigs SET rig=? WHERE session=?;"
cur.execute( query, (rig_json, session) )

还要注意
json.dumps(json.loads(xxx))
是愚蠢的。要传递这个消息,首先必须是有效的JSON。只需阅读字符串。

您的JSON到底是什么样子的?看起来您可能只想传递原始JSON。它非常复杂,有多层
dic
。如何传递原始JSON?