Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 3, 2013 14:22:00

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

Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?

model = QtGui.QStandartItemModel()

db = pyodbc.connect(SomeConnectString)
cur=db.cursor()
cur.execute('SELECT * FROM dbase')
rows = cur.fetchall()

for row in rows():
model.appendRow( чаво тут писать? )

Если вписать туда row, то Qt обругается на то, что pyodbc.Row ему ни на кой не сдалась и он не умеет его готовить.
Как перевести pyodbc.row в list-of-QStandartItem?

Офлайн

#2 Авг. 3, 2013 17:15:29

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?

Qt использует собственный MVC, если вы подключаетсь к базе данных не средствами Qt то скорее всего у вас ничего не получиться.

Пользуйтесь для подключения чем-нибудь вроде этого:

import sys
try:
    from PySide.QtSql import QSqlDatabase, QSqlTableModel
    from PySide import QtGui, QtCore
except ImportError:
     from PyQt4.QtSql import QSqlDatabase, QSqlTableModel
     from PyQt4 import QtGui, QtCore
else:
    sys.sterr.write("Import Error: No package PyQt4 or PySide")
def create_connect(database, host, port=3306, user, password):
    db =  QSqlDatabase.addDatabase("QMYSQL")
    db.setDatabaseName(database)
    db.setHostName(host)
    db.setPort(port)
    db.setUserName(user)
    db.setPassword(password)
    if not db.open():
        QtGui.QMessageBox.warning(None, 
           "Error conection with database",
                                 db.lastError().text())
        db.close()
        return False
    return True

Офлайн

#3 Авг. 3, 2013 19:28:00

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

Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?

Я не могу подключиться к dbf-файлу средствами Qt
Qt не умеет работать с dbf.

А мне надо считать dbf-файл и вывести его во view на форму.

Офлайн

#4 Авг. 3, 2013 20:34:27

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?

Я не могу подключиться к dbf-файлу средствами Qt
Qt не умеет работать с dbf.

Если приложение только проектируется, то лучше данные перегнать в sqlite. Можно например с помощью csvkit http://csvkit.readthedocs.org/en/latest/ в csv а после импортировать в sqlite его же средствами. Или воспользоваться готовым конвертером http://sqlite.mobigroup.ru/wiki?name=sqlite3-dbf
И далее пользоваться средствами Qt.

Если по каким-либо причинам (а я их не могу придумать) dbf (FoxPro) жестко задан то боюсь через модель отобразить средствами Qt не получиться. Возможно тогда заполнять поля таблиц самостоятельно, что-нибудь вроде:
	while q.next():
			table = QtGui.QTreeWidgetItem(self.treeWidget)
			table.setText(0, q.value(0).toString())

Если такой способ не походит, то единственный выход писать обвязку к этой библиотеке http://code.google.com/p/qdbf/

Офлайн

#5 Авг. 4, 2013 06:56:18

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

Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?

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

У меня вопрос: QStandardItem принимает только текстовые значения, что ль?

П.С. Ещё один вопрос на удачу: кто-нибудь умеет пользоваться языком Harbour (наследник Clipper)? Скачал, запускаю его IDE и ни черта не могу запустить. То он не знает куда собственный компилятор установил, то он ни в какую не хочет файл prg к проекту прицеплять, то ошибки крякозябрами пишет. Козёл этот харбор, короче. Я так на него надеялся…

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version