Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python将整个JSON转换为一个SQLite字段_Python_Json_Sqlite_Pyquery - Fatal编程技术网

使用Python将整个JSON转换为一个SQLite字段

使用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

我有一个很简单的问题。我试图从在线源代码中提取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:

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。