pyQT与MySQL或MSSQL连接
经过一番研究和调查,我决定用pyQT4来进行Python开发,并选择Eric5作为编辑器。不过,我在让MySQL正常工作时遇到了很大的困难。看起来是QMySQL这个驱动出了问题。从我看到的讨论来看,解决这个问题的唯一办法就是安装pyQT SDK,然后重新编译MySQL驱动。这是一个非常麻烦的过程,我真的不想经历。其实我更想用MS SQL,但我找不到支持MSSQL的pyQT驱动。
所以,我想问的是:使用pyQT与mySQL或MSSQL的最佳方法是什么,能真正有效地工作呢?
在等待答案的同时,我可能会尝试一下SQLAlchemy和mySQL.Connector,看看它们能否和pyQT一起使用。
3 个回答
你可以考虑使用 pyodbc 来连接你的数据库,即使你的界面是用QT做的。pyodbc可以和MySQL以及MS SQL Server这两种数据库兼容。
是的,这样做是可以的,我也是这么做的。我喜欢使用编程接口,比如SQLAlchemy,它比Qt的QtSql模块中的原始SQL版本要好用。这样做效果很好,只需要用你从SQLAlchemy查询得到的数据填充一个子类化的QAbstractTableModel,就像用其他Python对象的数据一样。不过,这样的话,你就得自己处理缓存和数据库查询了,失去了QtSqlTableModel的一些便利。不过应该也不会太麻烦。
如果你想用MS SQL数据库,在PyQt中其实很简单,只需要用到QSqlDatabase和ODBC驱动。
下面是我正在做的一个项目的片段,它使用了MS SQL。
db = QSqlDatabase.addDatabase('QODBC')
#TODO: Add support for trusted connections.
#("Driver={SQLServer};Server=Your_Server_Name;Database=Your_Database_Name;Trusted_Connection=yes;")
db.setDatabaseName('DRIVER={SQL Server};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s;'
% (hostname,
databasename,
username,
password))
db.open()
显然,你需要先设置好主机名、数据库名、用户名和密码这些变量。被注释掉的那行是用于可信连接的连接字符串;虽然我还没实际用过,但如果你需要的话,它应该可以正常工作。
一旦你打开了数据库,就可以像使用MySql时那样,使用QSqlQuery来进行操作,方法是一样的。