Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Базы данных
  • » Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql [RSS Feed]

#1 Сен. 1, 2013 19:12:25

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  1  -
Профиль   Отправить e-mail  

Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql

Код, думается, приводить незачем.
В общем из dbf-ки посредством модуля pyodbc и команды fetchall выбираются все строки,
затем в цикле каждая строчка из pyodbc.cursor помещается в питоновскую переменную,
из неё формируется строчка для sql-запроса на вставку Insert into sqlite_table (FAM, IM) values (dbfFAM, dbfIM)
И затем каждая такая sql-строчка выполняется посредством QtSql.QSqlQuery

В итоге, каждая вставка записи сопровождается немедленной записью на диск, и dbf-файлик из 71 тысячи записей уже больше десяти минут переносится в sqlite базу.

Мне думается, что надо как-то заставить программу выполнять запись на диск не сразу, а, допустим, порциями по 100 строк. А по началу они пусть в оперативной памяти добавляются. Набралось 100 записей, добавились они все на диск.

Как так можно сделать?
А может я вообще неверный способ для переноса dbf в sqlite таблицу выбрал?

Офлайн

#2 Сен. 1, 2013 20:37:53

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql

Pluto
немедленной записью на диск
По идее такое может быть если каждая вставка сопровождается commit
Попробуйте без прокладок напрямую к sqlite обращаться. Коммит сделайте в самом конце, 71 тысяча записей это немного.
http://docs.python.org/2/library/sqlite3.html
Попробуйте
c.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)



Отредактировано doza_and (Сен. 1, 2013 20:39:29)

Офлайн

#3 Сен. 2, 2013 18:55:08

Pluto
Зарегистрирован: 2012-05-29
Сообщения: 177
Репутация: +  1  -
Профиль   Отправить e-mail  

Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql

self.con.transaction() и self.con.commit(), где con - объект соединение с БД sqlite cпасли отца русской демократии!
Добавление записей (запись их на диск) произошло за несколько секунд.

Офлайн

#4 Ноя. 9, 2017 12:19:30

Ainur
Зарегистрирован: 2017-10-26
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql

Pluto
self.con.transaction() и self.con.commit(), где con - объект соединение с БД sqlite cпасли отца русской демократии!Добавление записей (запись их на диск) произошло за несколько секунд.
можете пожалуйста пример написать как это использовать?

Офлайн

#5 Апрель 24, 2020 22:49:07

Jony1990
Зарегистрирован: 2020-04-24
Сообщения: 12
Репутация: +  -1  -
Профиль   Отправить e-mail  

Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql

Вот не совсем понял, как он вообще этот код запустил ?

Офлайн

  • Начало
  • » Базы данных
  • » Нарисовал некий конвертер из dbf в sqlite. Работает оооооочень медленно... Python3 + pyodbc + QtSql[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version