http://www.python.org/getit/から python 2.7.3 (python-2.7.3.amd64.msi) を実行しています。
私は次のインストーラーを使用しています: http://www.lfd.uci.edu/~gohlke/pythonlibs/
- PyQt-Py2.7-x64-gpl-4.9.6-1.exe
- PySide-1.1.2.win-amd64-py2.7.exe
- MySQL-python-1.2.4.win-amd64-py2.7.exe
また、次の pyqt および pyside バイナリも試しました。
- http://www.riverbankcomputing.com/software/pyqt/download
- http://qt-project.org/wiki/PySide_Binaries_Windows
次の Python コードで「QSqlDatabase: QMYSQL ドライバーがロードされていません」というエラーが表示されます。私の推測では、上記の pyside および pyqt バイナリ インストーラーは QMYSQL を含めるように qt をビルドしていないのでしょうか? 誰でもそれを確認でき、さらに重要なことに、QMYSQL ドライバーがビルドされたインストーラーに案内してもらえますか? 自分で qt ライブラリをコンパイルする準備はできていません。どんな助けでも大歓迎です。
import sys
from showrec import * # import qtdesigner ui (converted using pyside-uic)
from PySide import QtGui, QtSql
#===================================================================
#
#===================================================================
def createConnection():
db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('localhost')
db.setDatabaseName('mydatabase')
db.setUserName('userid')
db.setPassword('password')
db.open()
print (db.lastError().text())
return True
#===================================================================
#
#===================================================================
class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
#super(MyForm, self).__init__(parent) # I suspect this is needed?
QtGui.QWidget.__init__(self,parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.model = QtSql.QSqlDatabase(self)
self.model.setTable("products")
self.model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
self.model.select()
self.ui.tableView.setModel(self.model)
#===================================================================
# main
#===================================================================
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
if not createConnection():
sys.exit(1)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
これはGUIコードです:
from PySide import QtCore, QtGui
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.tableView = QtGui.QTableView(Dialog)
self.tableView.setGeometry(QtCore.QRect(20, 20, 256, 192))
self.tableView.setObjectName("tableView")
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QtGui.QApplication.translate("Dialog", "Dialog", None, QtGui.QApplication.UnicodeUTF8))