我知道这个问题有很多问题和答案,但对我来说没有任何作用。
我安装了最新的
QT Creator 4.9.2
和Qt 5.13.0
MinGW 32-Bit
和MySQLServer 5.5
来编译QMYSQL
驱动程序。我但是 sqldrivers
文件夹中的驱动程序和 bin 文件夹中的 libmysql.dll
如果我使用 C++ 连接数据库,一切正常,但我不使用 python。
此外,我安装在新的 Python 3.7 32 位上:
pip install pyqt5 (5.13.0)
pip install mysqlclient (1.4.2)
pip install mysql-connector (2.2.9)
但是我之前在 PyQt5 的 sqldrivers 文件夹中编译的驱动程序,因为那里也缺少驱动程序。
我的班级:
class SqlConnector(QSqlDatabase):
def __init__(self):
super(SqlConnector, self).__init__()
self.db = self.connect()
def __del__(self):
self.db.close()
def connect(self):
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("hostname")
db.setDatabaseName("database")
db.setUserName("username")
db.setPassword("1234567890")
ok = db.open()
if ok:
print("Connection established")
return db
else:
print("Connection failed: ", db.lastError().text())
return None
def getPools(self):
query = QSqlQuery("SELECT id, name, token, dlxCode FROM AnalysisPool", self.db)
model = QSqlQueryModel()
model.setQuery(query)
return model
主要方法:
from PyQt5.QtSql import QSqlDatabase, QSqlQueryModel, QSqlQuery
from PyQt5.QtWidgets import QApplication, QTableView
if __name__ == "__main__":
app = QApplication(sys.argv)
poolView = QTableView()
poolView.show()
database = SqlConnector()
# poolView.setModel(database.getPools())
sys.exit(app.exec_())
PyQt 的库路径是
C:/Python/lib/site-packages/PyQt5/Qt/plugins
和 C:/Python
使用的操作系统是
Windows 10 (1809) 64-Bit
,我将MySQLServer lib文件夹包含在路径变量中。
我不知道该怎么办,我已经阅读了有关此主题的每个问题,但没有针对我的问题的有效解决方案。
对我来说是这样工作的:卸载通过 pip3 安装的软件包。
pip3 uninstall PyQt5
安装适用于您的发行版的本机软件包(Linux 情况)。就我而言,是 Fedora
Sudo dnf install python3-qt5 python3-qt5-qtbase --allowerasing
使用可让您覆盖旧文件的选项,例如
--force
或 --allowerasing
或类似文件。