Top.Mail.Ru
python по русски -- Day
? ?
python по русски -- Day [entries|friends|calendar]
Ру_питон

[ userinfo | livejournal userinfo ]
[ calendar | livejournal calendar ]

Кто тормозит - я, sqlite или django? [solved] [11 Dec 2011|12:03am]
Создал в django минимально возможную модель из одного-единственного поля:
foo=models.IntegerField(primary_key=True).
В базе получилось оно самое:
CREATE TABLE "foo_foo" (
    "foo" integer NOT NULL PRIMARY KEY
);

Написал тестовую программку для загрузки данных из файла. Она проверяет, есть ли уже объект с таким значением (Foo.objects.get(foo=...)), если нет - создаёт и сохраняет в базу. При отключённой записи в базу программа летает, но стоит раскомментировать o.save() у свежесозданного объекта - начинаются дикие тормоза, на добавление одной записи уходит порядка секунды.

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

База пустая, там одна-единственная таблица, других приложений в проекте вообще нет. Удалять базу целиком и создавать заново пробовал, не помогает.

Вопрос: это sqlite по жизни такой тормозной, или django с ним как-то криво работает, или это я что-то не так делаю?

Collapse )

Upd: проблема была вызвана автокоммитами после каждого save(). Решается использованием декоратора @transaction.commit_manually для функции, внутри которой крутится цикл, и transaction.commit() в конце этой функции.

Но почему автокоммиты занимают столько времени, я всё равно не понимаю.
10 comments|post comment

navigation
[ viewing | December 11th, 2011 ]
[ go | previous day|next day ]
Image