Sushant
Sushant

Reputation: 3669

Django storing a lot of data in table

Right now, I use this code to save the data to the database-

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()

Now len(companies) can vary from [3-50] and len(final_prices) can vary from somewhere between [5000-10000]. I know its a very inefficient way to store it in the database and takes a lot of time. What should I do to make it effective and less time consuming?

Upvotes: 0

Views: 506

Answers (1)

Tiny Instance
Tiny Instance

Reputation: 2671

If you really need to store them in the database you might check bulk_create. From the documents:

This method inserts the provided list of objects into the database in an efficient manner (generally only 1 query, no matter how many objects there are):

Although, I never personally used it for that many objects, docs say it can. This could make your code more efficient in terms of hitting the database and using multiple save().

Basically to try; create list of objects (without saving) and then use bulk_create. Like this:

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)

Upvotes: 2

Related Questions