QtSql w PyQt - dostęp do baz danych
12 December 2008
Comments
W Qt/PyQt mamy dostęp do modułu QtSql zapewniającego dostęp do popularnych baz danych, w tym także widżety do wyświetlania danych (gridy). Lista obsługiwanych baz danych zależy od ustawień w czasie kompilacji Qt. W przypadku pakiety PyQt4 dla MS Windows dostępne tylko są sterowniki do SQLite i ODBC. By móc korzystać z baz MySQL, czy PostgreSQL należałoby skompilować Qt z obsługą tych baz danych, a następnie PyQt4. Pod Linuksem i podobnymi systemami problemów z brakującymi sterownikami nie ma. Jeżeli nie zależy nam na szczególnych opcjach modułu QtSql możemy używać standardowych bibliotek Pythona zapewniających dostęp do baz danych.
Poniżej przedstawiono prosty przykład wykonywania zapytań SQL za pomocą QtSql:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
app = QApplication(sys.argv)
w = QTextBrowser()
# DB type, host, user, password...
db = QSqlDatabase.addDatabase("QMYSQL");
db.setHostName("localhost")
db.setDatabaseName("test")
db.setUserName("root")
db.setPassword("")
ok = db.open()
# True if connected
if ok:
w.insertHtml('Connected to MySQL<br />')
else:
w.insertHtml('ERROR connecting to MySQL<br />')
# do a query "on" a DB connection
query = QSqlQuery(db)
if query.exec_("SHOW TABLES"):
w.insertHtml('<br />')
while query.next():
table = query.value(0).toString()
w.insertHtml('%s<br />' % table)
w.insertHtml('<br />')
w.insertHtml('TOTAL %s TABLES' % query.size())
w.show()
sys.exit(app.exec_())
while x:
table = query.value(0).toString()
RkBlog
Comment article