Форум сайта python.su
Нудный я…))
.........
q.prepare ("INSERT INTO test (number) VALUES (?)")
q.addBindValue(xrange(rows))
q.execBatch()
.........
c.executemany('insert into test(number) values (?)', ((i, ) for i in xrange(rows)))
Офлайн
Хоспадя!.. Да что ж вы гонитесь за этими сотыми секунд? У вас что, высоконагруженный сервер? Ну так проапгрейдите железо! Не можете? – пишите на Си и/или асме!
Вы же выбрали питон, язык сам по себе медленный. Изначально, так сказать. Вот только всем его хватает. Ну почти всем. По крайней мере вам в ближайшем будущем точно хватит. И мне, я полагаю…
Вот не так давно с одним явером спорили – он с ПиАшПи на яву пересел, потому что она быстрее… Бред!
P.S. Простите, наболело…
Офлайн
ZZZДело не в сотых. Я понимаю что вставка 10 000 записей разом нечастый случай. Тема то началась с того, что был напуган “необьяснимой” разницей в скорости. А оказалось все не так страшно, надо всего лишь читать глазами и писать руками, и спрашивать совета у хороших людей). Полезно было уяснить про executemany() и execBatch(), что при множественной вставке только так и надо.
Хоспадя!..
Офлайн
:-)
Офлайн
может не совсем в тему, но QtSql и скорость присутствуют:
проверка БД наличие таблицы - надо сделать 30 раз
есть QSqlDatabase.tables()
но в зависимости от БД -(SQLite или Mysql) имена таблиц могут быть на разных регистрах
надо строить список и приводить к верхнему регистру - это секунды 3-4
а если использовать QSqlDatabase.record(имя_таблицы_В_ЛюБом_регистрЕ) - порядка 1сек
это к тому, что в нужно обход искать иногда…
Офлайн
u4upyКстати, у executemany есть ограничение - максимальный размер пакета обрабатываемый базой данных.
Полезно было уяснить про executemany() и execBatch(), что при множественной вставке только так и надо.
Офлайн
В реальности ни разу не сталкивался и не думаю, что столкнусь.
Офлайн
ZZZА я вот столкнулся, mysql, скрипт массовой загрузки данных, задрал в параметрах max_allowed_packet и резал списки в executemany на куски :) Зато залетало со свистом
В реальности ни разу не сталкивался и не думаю, что столкнусь.
Офлайн