Django在表

时间:2016-07-21 13:16:38

标签: python django

现在,我使用此代码将数据保存到数据库 -

for i in range(len(companies)):
    for j in range(len(final_prices)):
      linechartdata = LineChartData()
      linechartdata.foundation = company //this refers to a foreign-key of a different model
      linechartdata.date = finald[j]
      linechartdata.price = finalp[j]
      linechartdata.save()

现在len(companies)可能与[3-50]不同,len(final_prices)可能会在[5000-10000]之间变化。我知道这是一种将它存储在数据库中并且花费大量时间的非常低效的方法。我该怎么做才能使其有效且耗时少?

1 个答案:

答案 0 :(得分:2)

如果您确实需要将它们存储在数据库中,则可以检查bulk_create。来自文件:

  

此方法以有效的方式将提供的对象列表插入到数据库中(通常只有1个查询,无论有多少个对象):

尽管如此,我从未亲自将它用于那么多物品,但是文档说它可以。这可以使您的代码在访问数据库和使用多个save()方面更有效。

基本上要尝试;创建对象列表(不保存),然后使用bulk_create。像这样:

arr = []
for i in range(len(companies)):
    for j in range(len(final_prices)):
        arr.append(
           LineChartData(
              foundation = company,
              date = finald[j],
              price = finalp[j]
            )
        )
LineChartData.objects.bulk_create(arr)