我正在尝试将 JSON 文件保存到数据库中。我的经验很少,但经过一番搜索后,我发现了这段代码
import json
import sqlite3
JSON_FILE = "some.json"
DB_FILE = "some.db"
traffic = json.load(open(JSON_FILE))
conn = sqlite3.connect(DB_FILE)
foo = traffic[0]["foo"]
bar = traffic[0]["bar"]
data = [foo, bar]
c = conn.cursor()
c.execute('create table table_name (foo, bar)')
c.execute('insert into table_name values (?,?)', data)
conn.commit()
c.close()
但是,我遇到了错误 KeyError: 0
。
我正在测试的 JSON 是
{
"name":"",
"children":[
{
"name":"Level 1",
"children":[
{
"name":"Level 2",
"children":[
{
"name":"Level 3",
"children":[
{
"name":"Level 4",
"children":[
{
"name":"Speed",
"children":null,
"id":6
}
],
"id":5
}
],
"id":4
}
],
"id":3
}
],
"id":2
},
{
"name":"Level 1",
"children":[
{
"name":"Level 2",
"children":[
{
"name":"Level 3",
"children":[
{
"name":"Level 4",
"children":[
{
"name":"Cost",
"children":null,
"id":11
}
],
"id":10
}
],
"id":9
}
],
"id":8
}
],
"id":7
},
{
"name":"Level 1",
"children":[
{
"name":"Level 2",
"children":[
{
"name":"Level 3",
"children":[
{
"name":"Level 4",
"children":[
{
"name":"Manufacturability",
"children":null,
"id":16
}
],
"id":15
}
],
"id":14
}
],
"id":13
}
],
"id":12
}
],
"id":1
}
我到底如何将这个 JSON 或类似的 JSON 写入数据库?
最佳答案
您显示的代码创建一个数据库,其中包含一个名为“table_name”的表,其中包含两列“foo”和“bar”。此结构与您尝试存储的 JSON 文件不匹配。
您将需要更改 SQL 查询来创建一个数据库架构,以更好地表示您尝试存储的 JSON 结构。
例如,您可以创建一个包含三列的表,在下面的 DDL 中定义:
CREATE TABLE table_name (
id INTEGER PRIMARY KEY,
name VARCHAR,
parent INTEGER
);
您的 JSON 是分层的,这会导致数据库设计出现一些问题。虽然自引用表是一个有争议的问题,但它们能够存储 JSON 并维护结构。
如果你想简单地将 JSON 字符串存储在数据库中,你可以这样做:
CREATE TABLE table_name (
id INTEGER PRIMARY KEY,
json_contents VARCHAR
);
关于python - 将 JSON 写入 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006857/