我有一个可能很简单的问题。我正在尝试从在线源中提取 JSON,并将其存储在 SQLite 表中。除了将数据存储在丰富的表中(对应于 JSON 中的许多字段)之外,我还想在每次拉取时将整个 JSON 转储到表中。
该表看起来像:
CREATE TABLE Raw_JSONs (ID INTEGER PRIMARY KEY ASC, T DATE DEFAULT (datetime('now','localtime')), JSON text);
我使用以下 python 代码从某个 URL 中提取了 JSON:
from pyquery import PyQuery
from lxml import etree
import urllib
x = PyQuery(url='json')
y = x('p').text()
现在,我想执行以下 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 游戏的新手,因此任何值得推荐的在线资源都会很棒。
Thanks!
.execute()
期望一个sequence,最好给它一个单元素元组:
c.execute("insert into Raw_JSONs values(NULL,DATETIME('now'),?)", (y,))
Python 字符串也是一个序列,是单个字符之一。所以.execute()
call 尝试将每个单独的字符视为查询的参数,除非您的字符串短一个字符,否则意味着它将无法提供正确数量的参数。
不要忘记提交您的插入内容:
db.commit()
或使用数据库连接作为上下文管理器:
with db:
# inserts executed here will automatically commit if no exceptions are raised.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)