【发布时间】:2012-02-07 08:48:21
【问题描述】:
我想将我创建的 JSON 文件转换为 SQLite 数据库。
我的意图是稍后决定哪个数据容器和入口点最好,json(通过文本编辑器输入数据)或 SQLite(通过 SQLiteStudio 等类似电子表格的 GUI 输入数据)。
我的json文件是这样的(包含我所在城市一些十字路口的交通数据):
...
"2011-12-17 16:00": {
"local": "Av. Protásio Alves; esquina Ramiro Barcelos",
"coord": "-30.036916,-51.208093",
"sentido": "bairro-centro",
"veiculos": "automotores",
"modalidade": "semaforo 50-15",
"regime": "típico",
"pistas": "2+c",
"medicoes": [
[32, 50],
[40, 50],
[29, 50],
[32, 50],
[35, 50]
]
},
"2011-12-19 08:38": {
"local": "R. Fernandes Vieira; esquina Protásio Alves",
"coord": "-30.035535,-51.211079",
"sentido": "único",
"veiculos": "automotores",
"modalidade": "semáforo 30-70",
"regime": "típico",
"pistas": "3",
"medicoes": [
[23, 30],
[32, 30],
[33, 30],
[32, 30]
]
}
...
我已经创建了一个很好的数据库,它与这些 Python 代码行具有一对多的关系:
import sqlite3
db = sqlite3.connect("fluxos.sqlite")
c = db.cursor()
c.execute('''create table medicoes
(timestamp text primary key,
local text,
coord text,
sentido text,
veiculos text,
modalidade text,
pistas text)''')
c.execute('''create table valores
(id integer primary key,
quantidade integer,
tempo integer,
foreign key (id) references medicoes(timestamp))''')
但问题是,当我准备插入带有 c.execute("insert into medicoes values(?,?,?,?,?,?,?)" % keys) 之类的实际数据的行时,我意识到,由于从 JSON 文件加载的 dict 没有特殊顺序,它不能正确映射到数据库的列顺序。
所以,我问:“我应该使用哪种策略/方法以编程方式从 JSON 文件中的每个“块”(在本例中为“local”、“coord”、“sentido”、“veiculos” , "modalidade", "regime", "pistas" e "medicoes"),创建具有相同顺序列的数据库,然后插入具有正确值的行”?
我在 Python 方面有相当丰富的经验,但我刚开始接触 SQL,所以我想获得一些关于良好实践的咨询,而不一定是现成的秘诀。
【问题讨论】:
标签: python json sqlite database-design