【问题标题】:Django storing a lot of data in tableDjango在表中存储大量数据
【发布时间】:2016-07-21 13:16:38
【问题描述】:

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

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] 之间变化。我知道将它存储在数据库中的一种非常低效的方式并且需要很多时间。我应该怎么做才能使其有效并减少耗时?

【问题讨论】:

标签: python django


【解决方案1】:

如果您确实需要将它们存储在数据库中,您可以查看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)

【讨论】:

  • 我知道有一个 bulk_create 方法,但我找不到正确的例子来理解如何使用它
  • 如果您只是将链接的答案重写为副本,至少要改进它。例如,添加示例代码。
  • @spectras 对不起,我没有真正看到你的评论。我应该删除这个吗?
  • 刚刚为您的代码添加了一个示例。希望它可以帮助@ThatBird
  • 谢谢,帮了大忙!
猜你喜欢
  • 2018-03-07
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
相关资源
最近更新 更多