我对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
结尾的数据会乱码\,以避开双引号和换行符,再加上将整个数据插入包装在一组双引号中。结果,数据根本无法使用。因此,我目前不得不手动将数据复制并粘贴到数据库中,尽管这个繁琐的任务可以很好地完成,但要做的事情远非正确。
我不需要以任何方式对数据进行编辑,操纵或做任何事情。我simply想要从给定文件中读取JSON字符串,然后将其内容插入数据库中的记录中,也就是说,故事的结尾,仅此而已。
是否真的没有简单的实现方式?
[读取文件时,您需要json.loads()。而且没有缩进。所以做: