2016-07-21 27 views
0

に多くのデータを格納し、私は今がどこかの間から変えることができ、[3-50]とlen(final_prices)から変えることができデータベース -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() 

にデータを保存するには、このコードを使用します[5000-10000]。私はそれをデータベースに格納するのに非常に非効率的な方法を知っており、多くの時間がかかります。それを効果的にし、時間を節約するために私は何をすべきですか?

+2

の可能性のある重複した[バルクジャンゴでモデルオブジェクトを作成](http://stackoverflow.com/questions/3608487/bulk-create-model-objects-in-django) – spectras

答えて

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) 
+0

私はそこに存在することがわかっていますbulk_createメソッドを使用する方法を理解する正しい例が見つかりません – ThatBird

+0

重複してリンクされている回答を書き直す場合は、少なくとも改善してください。たとえば、サンプルコードを追加します。 – spectras

+0

@spectras申し訳ありませんが、あなたのコメントは本当に表示されませんでした。これを削除する必要がありますか? –