Эффективное заполнение базы данных с помощью python и Django
Мы пытаемся заполнить базу данных с помощью Python и Django случайными числами, но нам нужно перебрать много строк, и на выполнение этой задачи уходит около 20 минут.
Вот наш код. Нам нужно перебрать 210000 строк
def populate(request):
all_accounts = Account.objects.all()
count = 0
for account in all_accounts:
account.avg_deal_size = round(random.randint(10, 200000), 2)
account.save()
print(f"Counter of accounts: {count}")
count += 1
Спасибо!
Предполагая, что вам не нужна логика в .save()
, или сигналы для выполнения и т.д., просто используйте SQL, чтобы ваша RDBMS сделала тяжелую работу. Это должно выполняться за несколько секунд, если это так.
from django.db import connection
def populate(request):
with connection.cursor() as cur:
cur.execute("UPDATE myapp_account SET avg_deal_size = round(10 + random() * 190000, 2)")
(res,) = cur.fetchone()
print(f"{res} rows affected.")