2011-04-12 214 views
1

经过大量研究和调查后,我决定用python5作为编辑器使用pyQT4进行Python开发。但是,我试图让MySQL工作,我遇到了一堵砖墙。看起来QMySQL驱动程序存在问题。从我迄今为止看到的讨论中,唯一的解决方法是安装pyQT SDK,然后重新编译MySQL驱动程序。一个我真的不想经历的痛苦过程。我实际上更喜欢使用MS SQL,但是我没有找到任何支持MSSQL的pyQT驱动程序。pyQT和MySQL或MSSQL连接

所以,我的问题是:什么是最好的方法使用python或mySQL或MSSQL,实际工作?

在等待答案的时候,我可能会用SQLAlchemy和mySQL.Connector来修饰它,看它是否会与pyQT共存。

回答

2

如果你想使用MS SQL,使用QSqlDatabase和ODBC驱动程序很容易在PyQt中使用。

以下是我正在使用的使用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() 

显然你需要设置主机名,数据库名,用户名和密码变量。注释掉的行显示了Trusted Connections的连接字符串;不是我实际需要尝试的东西,但它应该工作,如果这是你需要的。

打开数据库后,可以像使用MySql和PyQt驱动程序一样使用QSqlQuery。

+0

感谢您的提示和示例代码。原来我的问题是我的安装。我犯了一个错误,就是看到其他人在互联网上发布关于必须手动构建驱动程序的问题,然后假设这是我的同一问题。事实证明,我通过卸载所有我正在测试的Python工具来解决这个问题。我做了一个Python 3.2的新安装,PyQt 3.2和Eric5。现在,用于测试MySQL连接的示例工作正常。 – Tim 2011-04-14 17:58:26

+0

@Tim是否可以发布您用于连接MySQL.i的设置,尝试如下但未成功...'db = QtSql.QSqlDatabase.addDatabase(“QODBC”)''db.setDatabaseName('DRIVER = {MySQL服务器}; SERVER =%s; DATABASE =%s; UID =%s; PWD =%s;')%(主机名,数据库名,用户名,密码))' – Rao 2012-12-20 04:42:08

1

是的,这将工作,我做同样的事情。我喜欢编程API,就像SQLAlchemy通过Qt的QtSql模块的原始SQL版本提供的一样。它工作正常,很好,只需使用sqlalchemy查询中的数据填充子类QAbstractTableModel,就像使用其他任何python对象的数据一样。这虽然意味着你正在处理缓存和数据库查询,失去了QtSqlTableModel的好处。但不应该太糟糕。

+0

它确实这样工作,但事实证明我有其他问题。全新的安装为我照顾。 – Tim 2011-04-14 18:03:12

0

即使GUI由QT提供,您也可以考虑使用pyodbc来实现数据库连接。 Pyodbc兼容MySQL和MS SQL Server。