Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 25, 2009 19:33:10

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite на Windows

Нудный я…))

.........
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
>>>

Наверно окончательный вариант, быстрее не сделать.



Офлайн

#2 Окт. 25, 2009 21:13:14

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

SQLite на Windows

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

P.S. Простите, наболело…



Офлайн

#3 Окт. 25, 2009 23:17:34

u4upy
От:
Зарегистрирован: 2009-05-25
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite на Windows

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

Так что все гут. )



Офлайн

#4 Окт. 25, 2009 23:53:02

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

SQLite на Windows

:-)



Офлайн

#5 Окт. 26, 2009 00:39:42

villager
От:
Зарегистрирован: 2008-11-04
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLite на Windows

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

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

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

это к тому, что в нужно обход искать иногда…



Офлайн

#6 Окт. 26, 2009 05:41:12

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

SQLite на Windows

u4upy
Полезно было уяснить про executemany() и execBatch(), что при множественной вставке только так и надо.
Кстати, у executemany есть ограничение - максимальный размер пакета обрабатываемый базой данных.



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Окт. 26, 2009 06:25:46

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

SQLite на Windows

В реальности ни разу не сталкивался и не думаю, что столкнусь.



Офлайн

#8 Окт. 26, 2009 07:38:44

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

SQLite на Windows

ZZZ
В реальности ни разу не сталкивался и не думаю, что столкнусь.
А я вот столкнулся, mysql, скрипт массовой загрузки данных, задрал в параметрах max_allowed_packet и резал списки в executemany на куски :) Зато залетало со свистом



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version