以json格式将sqlite数据库中的数据写入python中的文本文件
Posted
技术标签:
【中文标题】以json格式将sqlite数据库中的数据写入python中的文本文件【英文标题】:Write data from sqllite data base in json format to text file in python 【发布时间】:2021-12-14 06:05:40 【问题描述】:我有一个名为 art.db 的数据库,它由 5 个表组成 表:table1、table2、table3、table4 和 table5
我想将所有表格数据以 json 格式写入文本文件。我只能写一个表数据。 有人能帮帮我吗
下面是我的代码:
import json
import sqlite3
con = sqlite3.connect('/content/art.db')
cursor = con.cursor()
cursor.execute('''SELECT * FROM table1''')
rows = cursor.fetchall()
rowarray_list = []
for row in rows:
t = (row[0], row[1])
rowarray_list.append(t)
j = json.dumps(rowarray_list)
with open("table1.js", "w") as f:
f.write(j)
import collections
objects_list = []
for row in rows:
d = collections.OrderedDict()
d["artwork_id"] = row[0]
d["department_id"] = row[1]
objects_list.append(d)
j = json.dumps(objects_list)
with open("final_data.txt", "w") as f:
f.write(j)
final_data.txt 应该包含所有 5 个 json 格式的表格数据。
【问题讨论】:
你确定你需要循环rows
吗?为什么不将 SQL 调整为只返回感兴趣的字段并在rows
上使用json.dumps
?
【参考方案1】:
您的问题缺乏可重现的数据,但您可以尝试以下方法:
import sqlite3
import json
# https://***.com/a/3300514/15239951
def dict_factory(cursor, row):
d =
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
tables = ['table1', 'table2', 'table3', 'table4', 'table5']
data =
con = sqlite3.connect('/content/art.db')
con.row_factory = dict_factory
cursor = con.cursor()
for table in tables:
cursor.execute(f'''SELECT * FROM table''')
rows = cursor.fetchall()
data[table] = rows
with open('final_data.json', 'w') as fp:
json.dump(data, fp, indent=4)
【讨论】:
我有不同的列名。 artifact_id 和 department_id 是 table1 的列。 这些是每个表的列名。 table1 列 :artwork_id,department_id ############### table2 列 :id,accession_number,title,tombstone ############## table3 列 :id ,role,description ############### table4 columns :artwork_id,creator_id ############### table5 columns :id,name 我想写将每个表中的数据以 json 格式保存到文本文件中。 您只想转储每个表中的所有数据,而它们之间没有任何关系? 是的,你是对的 我删除了无用的循环“for row in rows”以上是关于以json格式将sqlite数据库中的数据写入python中的文本文件的主要内容,如果未能解决你的问题,请参考以下文章
对于带有 json 列的 sqlite db,fastapi 响应的格式不正确
以 SQLite 和 HDF5 格式从/导入到 numpy、scipy