Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 4, 2008 09:26:08

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

PyQt4 + FireBird

Здравствуйте.
У меня проблема с подключением к БД FireBird из PyQt.
Я знаю, что в стандартную поставку Qt под windowsдрайвер Ibase не входит. Я собирал как драйвер отдельно (в виде плагина), так и пересобирал qt целиком с поддержкой ibase.
Если я пытаюсь подключится к базе из программы на C, то всё нормально. А питон упорно заявляет, что
QSqlDatabase: QIBASE driver not loaded
QSqlDatabase: available drivers: QODBC3 QODBC QSQLITE
Что делать? kinterbasdb мне не подходит.
Спасибо.



Офлайн

#2 Апрель 4, 2008 12:03:36

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQt4 + FireBird

Я знаю, что в стандартную поставку Qt под windowsдрайвер Ibase не входит. Я собирал как драйвер отдельно (в виде плагина), так и пересобирал qt целиком с поддержкой ibase.
pyqt пересобирал?
kinterbasdb мне не подходит.
Чем?



Отредактировано (Апрель 4, 2008 12:04:09)

Офлайн

#3 Апрель 4, 2008 12:12:47

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

PyQt4 + FireBird

j2a
pyqt пересобирал?
Нет, а нужно?
j2a
Чем?
Тем что мне нужно отображать данные в таблички на формах. Много данных. И быстро. А питоновский цикл по добавлению строк в QTableWidget работает очень медленно.



Офлайн

#4 Апрель 4, 2008 13:20:13

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + FireBird

Не надо все сразу добавлять. А только по мере необходимости.



Офлайн

#5 Апрель 4, 2008 13:33:17

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

PyQt4 + FireBird

balu
Не надо все сразу добавлять. А только по мере необходимости.
Зачем что-то изобретать, если в Qt это уже работает? Не получается только конкретно FireBird и конкретно на винде.



Офлайн

#6 Апрель 4, 2008 15:03:01

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQt4 + FireBird

dndred
j2a
Чем?
Тем что мне нужно отображать данные в таблички на формах. Много данных. И быстро. А питоновский цикл по добавлению строк в QTableWidget работает очень медленно.
А как QtSql с поддержкой Firebird избавит вас от питоновского цикла?



Офлайн

#7 Апрель 4, 2008 15:12:46

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

PyQt4 + FireBird

j2a
А как QtSql с поддержкой Firebird избавит вас от питоновского цикла?
db = QtSql.QSqlDatabase.addDatabase(“QPSQL”)
db.setHostName(“”)
db.setDatabaseName(“test”)
db.setUserName(“dndred”)
db.open()
aw = QtGui.QTableWidget()
cur = QtSql.QSqlTableModel()
cur.setTable(“docs”)
cur.select()
aw.setModel(cur)

Данные отображаются очень быстро.
Qt у меня уже поддерживает FireBird. Только похоже до PyQt это никак не доходит.
Поковырял configure.py в PyQt, но похожего ключика не нашёл. Не подскажите?



Отредактировано (Апрель 4, 2008 15:19:46)

Офлайн

#8 Апрель 4, 2008 15:13:31

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQt4 + FireBird

dndred
balu
Не надо все сразу добавлять. А только по мере необходимости.
Зачем что-то изобретать, если в Qt это уже работает? Не получается только конкретно FireBird и конкретно на винде.
Как бы для этого ничего изобретать не надо, и это действительно есть в Qt. Только для этого нужен не QTableWidget, а QTableView.



Отредактировано (Апрель 4, 2008 15:14:35)

Офлайн

#9 Апрель 4, 2008 15:14:50

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + FireBird

От цикла избавит только переход от QTableWidget к QTableView + QAbstractTableModel, другое дело что если у вас есть источник данных в виде QSqlTableModel всё это дело решается за вас внутренними средствами Qt. Так действительно уж лучше, и для этого надо самому пересобрать Qt, sip и PyQt, т.к. в последних версиях PyQt уже имеет в себе библиотеки Qt и использует их, а не те, что вы откомпилировали и установили в системе.



Офлайн

#10 Апрель 4, 2008 15:21:03

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

PyQt4 + FireBird

conn = psycopg2.connect(database='test', username='dndred')
curs = conn.cursor()
curs.execute('SELECT * FROM docs')
model = DbAPICursorModel()
model.setResultset(curs)
aw = QtGui.QTableWidget()
aw.setModel(model)
что такое DbAPICursorModel - см. http://pypi.python.org/pypi/EuroPython2006_PyQt4_Examples/



Отредактировано (Апрель 4, 2008 15:21:53)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version