【问题标题】:create object and bulk upload data into django model创建对象并将数据批量上传到 django 模型中
【发布时间】:2020-06-15 18:45:42
【问题描述】:

django 新手.. 我有一个 webrequest,我可以从那里得到 json 格式的响应。 我创建了视图,在其中手动将字段映射到每个对象,然后通过循环遍历记录来使用 .save 方法。

示例:

for item in response:
   dataload = My_model(
      person_name = get("person_name",None)
   )
   dataload.save()

但是这需要很多时间,因为我的数据有很多列和行(100k)左右..因此我想创建对象然后进行批量加载..

示例:

for item in response:
   dataobj = my_model.objects.create(
      person_name = get("person_name",None)
   )
   _models += (dataobj,)
 my_model.objects.bulk_create(_models)

但是,这给了我一个错误“ORA-00001:违反了唯一约束”,我认为这是由于在批量上传过程中没有创建自动生成的 id..

任何专家都可以帮我解决这个问题并更快地将数据加载到 django 模型。

谢谢

【问题讨论】:

    标签: python json django


    【解决方案1】:

    您以错误的方式使用bulk_create。正确的方法是创建一个对象列表,然后像这样调用bulk_create()

    my_model = [My_model(person_name='some_name') for i in response]
    objects = My_model.objects.bulk_create(my_model)
    

    docsbulk_create() 解释注意事项

    【讨论】:

    • 如何使用超过 70 列/字段来做到这一点.. 有什么建议吗?
    • 如果您的模型包含超过 70 个字段,您可以寻找重新设计模型的方法或使用一些变通方法。 This post 应该能帮到你
    猜你喜欢
    • 2011-04-06
    • 2018-06-09
    • 2016-08-15
    • 2021-08-13
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2021-11-24
    相关资源
    最近更新 更多