使用Python将整个JSON放到一个SQLite字段中

2024-04-26 18:31:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很简单的问题。我试图从一个在线源获取一个JSON,并将其存储在SQLite表中。除了将数据存储在一个富表中,对应于JSON中的许多字段之外,我还想在每次提取JSON时将整个JSON转储到一个表中。在

表看起来像:

CREATE TABLE Raw_JSONs (ID INTEGER PRIMARY KEY ASC, T DATE DEFAULT (datetime('now','localtime')), JSON text);

我使用以下python代码从某个URL中提取了一个JSON:

^{pr2}$

现在,我想执行以下INSERT命令:

import sqlite3

db = sqlite3.connect('a.db')
c = db.cursor()

c.execute("insert into Raw_JSONs values(NULL,DATETIME('now'),?)", y)

但我被告知我提供了错误的数字绑定(即数千,而不是1)。我想它是把y变量作为JSON的所有不同元素来读取的。在

有人能帮我存储完整的JSON吗?在

另外,由于我对这个JSON游戏还不熟悉,任何可以推荐的在线资源都会非常棒。在

谢谢!在


Tags: 数据keyidjsondbsqliterawcreate
2条回答

您还可能有兴趣了解内置的sqlite模块适配器。这两种方法都可以将任何python对象转换为sqlite列。请参阅标准documentation和适配器部分。在

.execute()需要一个序列,最好给它一个单元素元组:

c.execute("insert into Raw_JSONs values(NULL,DATETIME('now'),?)", (y,))

Python字符串也是一个序列,是单个字符之一。因此,.execute()调用试图将每个单独的字符作为查询的参数,除非字符串短一个字符,否则它将无法提供正确数量的参数。在

别忘了提交你的插页:

^{pr2}$

或将数据库连接用作上下文管理器:

with db:
    # inserts executed here will automatically commit if no exceptions are raised.

相关问题 更多 >