Найти - Пользователи
Полная версия: SQLite на Windows
Начало » Python для новичков » SQLite на Windows
1 2 3
u4upy
Нудный я…))

.........
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)))
>>>
0.171999931335
0.139999866486
>>>

Наверно окончательный вариант, быстрее не сделать.
ZZZ
Хоспадя!.. Да что ж вы гонитесь за этими сотыми секунд? У вас что, высоконагруженный сервер? Ну так проапгрейдите железо! Не можете? – пишите на Си и/или асме!
Вы же выбрали питон, язык сам по себе медленный. Изначально, так сказать. Вот только всем его хватает. Ну почти всем. По крайней мере вам в ближайшем будущем точно хватит. И мне, я полагаю…
Вот не так давно с одним явером спорили – он с ПиАшПи на яву пересел, потому что она быстрее… Бред!

P.S. Простите, наболело…
u4upy
ZZZ
Хоспадя!..
Дело не в сотых. Я понимаю что вставка 10 000 записей разом нечастый случай. Тема то началась с того, что был напуган “необьяснимой” разницей в скорости. А оказалось все не так страшно, надо всего лишь читать глазами и писать руками, и спрашивать совета у хороших людей). Полезно было уяснить про executemany() и execBatch(), что при множественной вставке только так и надо.

Так что все гут. )
ZZZ
:-)
villager
может не совсем в тему, но QtSql и скорость присутствуют:
проверка БД наличие таблицы - надо сделать 30 раз
есть QSqlDatabase.tables()
но в зависимости от БД -(SQLite или Mysql) имена таблиц могут быть на разных регистрах

надо строить список и приводить к верхнему регистру - это секунды 3-4

а если использовать QSqlDatabase.record(имя_таблицы_В_ЛюБом_регистрЕ) - порядка 1сек

это к тому, что в нужно обход искать иногда…
PooH
u4upy
Полезно было уяснить про executemany() и execBatch(), что при множественной вставке только так и надо.
Кстати, у executemany есть ограничение - максимальный размер пакета обрабатываемый базой данных.
ZZZ
В реальности ни разу не сталкивался и не думаю, что столкнусь.
PooH
ZZZ
В реальности ни разу не сталкивался и не думаю, что столкнусь.
А я вот столкнулся, mysql, скрипт массовой загрузки данных, задрал в параметрах max_allowed_packet и резал списки в executemany на куски :) Зато залетало со свистом
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB