Найти - Пользователи
Полная версия: Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?
Начало » Базы данных » Pyton3+pyodbc+pyqt. Как pyodbc.row запихнуть в QStandartItemModel?
1
Pluto
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?
Alen
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
Pluto
Я не могу подключиться к dbf-файлу средствами Qt
Qt не умеет работать с dbf.

А мне надо считать dbf-файл и вывести его во view на форму.
Alen
Я не могу подключиться к 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/
Pluto
Я пока что не пишу никакого конкретного приложения, просто пытаюсь как-нибудь вывести на экран dbf-файл.
Кстати, кажись это у меня получилось.

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

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