Почему моя база данных django так медленно и часто терпит неудачу? - PullRequest
4 голосов
/ 14 января 2011

Я решил, что хотел бы использовать систему моделей django вместо кодирования необработанного SQL для взаимодействия с моей базой данных, но у меня возникла проблема, которую, безусловно, можно избежать.

Мой models.py содержит:

class Student(models.Model):
    student_id = models.IntegerField(unique = True)
    form = models.CharField(max_length = 10)
    preferred = models.CharField(max_length = 70)
    surname = models.CharField(max_length = 70)

и я заполняю его, просматривая список следующим образом:

from models import Student

for id, frm, pref, sname in large_list_of_data: 
   s = Student(student_id = id, form = frm, preferred = pref, surname = sname)
   s.save()

Я не хочу каждый раз сохранять это в базу данных, но не хочузнаю другой способ заставить django не забывать об этом (я бы лучше добавил все строки, а затем сделал бы один коммит).

Есть две проблемы с кодом в его нынешнем виде.

  1. Это медленно - около 20 студентов обновляются каждую секунду.

  2. Он даже не проходит через large_list_of_data, вместо этого выдает ошибку DatabaseErrorговоря "невозможно открыть файл базы данных".(Возможно, потому что я использую sqlite3.)

Мой вопрос: как я могу остановить эти две вещи?Я предполагаю, что корень обеих проблем заключается в том, что у меня есть s.save (), но я не вижу способа легко собрать студентов и затем сохранить их за один коммит в базу данных.

1 Ответ

5 голосов
/ 14 января 2011

Так что, похоже, я должен был выглядеть более усердно, прежде чем задавать вопрос.

Некоторые решения описаны в этом вопросе * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Другие идеи по ускорению этого типа операций перечислены в этот вопрос о стекопереработке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...