Python:将JSON文件导入SQLAlchemy JSON字段

问题描述 投票:0回答:1

我对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)

这里我有多个数据列,data1data2,因此我可以直观地比较插入的数据。最终模型将只有一个数据字段。

这里是所有似乎都出错的数据插入:

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')

data1data2结尾的数据会乱码\,以避开双引号和换行符,再加上将整个数据插入包装在一组双引号中。结果,数据根本无法使用。因此,我目前不得不手动将数据复制并粘贴到数据库中,尽管这个繁琐的任务可以很好地完成,但要做的事情远非正确。

我不需要以任何方式对数据进行编辑,操纵或做任何事情。我simply想要从给定文件中读取JSON字符串,然后将其内容插入数据库中的记录中,也就是说,故事的结尾,仅此而已。

是否真的没有简单的实现方式?

json python-3.x flask-sqlalchemy
1个回答
1
投票

[读取文件时,您需要json.loads()。而且没有缩进。所以做:

© www.soinside.com 2019 - 2024. All rights reserved.