使用Python将整个JSON转换为一个SQLite字段
我有一个很简单的问题。我试图从在线源代码中提取JSON,并将其存储在SQLite表中。除了将数据存储在一个富表中(对应于JSON中的许多字段),我还想在每次提取JSON时将整个JSON转储到一个表中 该表如下所示:使用Python将整个JSON转换为一个SQLite字段,python,json,sqlite,pyquery,Python,Json,Sqlite,Pyquery,我有一个很简单的问题。我试图从在线源代码中提取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: fro
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游戏的新手,任何可以推荐的在线资源都会非常棒
谢谢 .execute()
需要一个序列,最好给它一个单元素元组:
c.execute("insert into Raw_JSONs values(NULL,DATETIME('now'),?)", (y,))
Python字符串也是一个序列,是单个字符之一。因此,.execute()
调用试图将每个单独的字符作为查询的参数,除非字符串短一个字符,否则这意味着它无法提供正确数量的参数
不要忘记提交插入内容:
db.commit()
或者将数据库连接用作上下文管理器:
with db:
# inserts executed here will automatically commit if no exceptions are raised.
您可能还想了解内置的sqlite模块适配器。这两种方法都可以将任何python对象转换为sqlite列。请参阅标准和适配器部分 就这么简单。谢谢。新问题;道歉。请让我知道,如果你认为这应该是一个单独的线程。你在插入后提交吗
connection.commit()
或将连接用作上下文管理器。@user1893148:通常,这应该是一个新问题,真的。您可能想看看面向文档的数据库,它基本上以本机方式存储JSON。