【发布时间】:2020-04-30 20:05:39
【问题描述】:
我对 Python 比较陌生,所以我希望我错过了一些非常明显的东西......但是 StackOverflow 上所有类似的问题/答案对于我正在尝试的简单任务来说似乎真的过于复杂达到。
我有几百个包含 JSON 数据的文本文件(实际的数据结构并不重要,下面的这个块只是为了告诉你我有什么样的东西,数据的实际结构可能会有很大的不同,但它将始终是有效的 JSON 数据)。
{
"config": {
"item1": "value1",
"item2": "value2"
},
"data": [
{
"dataA1": "valueA1",
"itemA2": "valueA2"
},
{
"dataB1": "valueB1",
"itemB2": "valueB2",
"itemB3": "valueB3"
}
]
}
我的模型是这样的:
class ModelName(db.Model):
__tablename__ = 'table_name'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64))
data1 = db.Column(db.JSON)
data2 = db.Column(db.JSON)
我这里有多个数据列,data1 和data2,这样我就可以对插入的数据进行视觉比较。最终模型将只有一个数据字段。
这是似乎一切都出错的数据插入:
import json
new_record = ModelName(
name='Foo',
data1=open('./filename.json').read(),
data2=json.dumps(open('./filename.json').read(), indent=2)
)
try:
db.session.add(new_record)
db.session.commit()
print('Insert successful')
except:
print('Insert failed')
以data1 和data2 结尾的数据散布着不同数量的 \ 以转义双引号和换行符,而且它将整个数据插入包装在一组双引号中。结果,数据根本无法使用。所以我目前不得不手动将数据复制并粘贴到数据库中,虽然这项繁琐的任务工作正常,但它远非正确的事情。
我不需要以任何方式编辑、操作或对数据执行任何操作。我只是想从给定文件中读取 JSON 字符串,然后将其内容插入到数据库中的记录中,就是这样,故事结束,仅此而已。
真的没有简单方法可以实现这一点吗?
【问题讨论】:
-
读取文件时需要
json.loads()。并且没有缩进 kwarg。所以改为:data2=json.loads(open('filename.json').read()) -
谢谢!这正是我需要的!如果你想把它放在一个答案中,我会接受它作为解决方案。非常感谢@mechanical_meat
-
不客气。答案已添加。祝您编码愉快!
标签: json python-3.x flask-sqlalchemy