【问题标题】:Deserialize django json data dump one record at the time?反序列化django json数据一次转储一条记录?
【发布时间】:2011-02-23 22:58:36
【问题描述】:

我正在尝试使用 json-data 读取文件,使用 load(data) simplejson 方法并提取创建一个表示记录中每一列的值的字典,而不是使用“标准”或记录的方式:

for obj in serializers.deserialize("json", data):
    # do something with obj

因为我想避免为每条记录创建 django orm 对象,我只想要一个代表每个对象的字典,这样我就可以使用纯 SQL 将其插入数据库以提高速度。问题是负载(数据)需要将所有数据读入内存,我想避免这种情况以保持低内存使用率并读取 json-data 中的条目。是否有可能获得一个为一条记录产生数据的迭代器?其次,我可以在反序列化 json 数据时跳过 django orm 对象的整个创建过程,只获取值的字典吗?

欢迎提供意见和想法。

感谢您的宝贵时间。

【问题讨论】:

    标签: django json deserialization


    【解决方案1】:

    如果您不想创建 ORM 对象,那么使用 Django 反序列化方法是没有意义的。只需使用底层 simplejson 库加载 JSON:

    from django.utils import simplejson
    my_data = simplejson.loads(data)
    

    【讨论】:

    • 但是 wont that load the entire json object into memory? Im 正在寻找避免这种情况的方法。无论如何感谢您的输入:-)
    • 为什么这是个问题?您只是在创建一个字典,与实际创建 Django 模型实例相比,它的影响相当低。无论如何,我不知道有任何方法可以迭代地反序列化 JSON 对象。
    猜你喜欢
    • 1970-01-01
    • 2013-12-20
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    相关资源
    最近更新 更多