QT开发, 使用SQLite库。
我使用下述代码,可以正常的建立和打开数据库,并进行操作。
SqliteOperator::SqliteOperator()
{
if (QSqlDatabase::contains("qt_sql_default_connection"))
{
database = QSqlDatabase::database("qt_sql_default_connection");
}
else
{
// 建立和SQlite数据库的连接
database = QSqlDatabase::addDatabase("QSQLITE");
// 设置数据库文件的名字
database.setDatabaseName("MyDataBase.db");
}
}
但是,一旦我换掉默认连接qt_sql_default_connection,比如:换成my_sql_connection
然后,相应的database = QSqlDatabase::addDatabase("QSQLITE","my_sql_connection");
就报错:QSqlError("", "Driver not loaded", "Driver not loaded")
我查看了数据库是被成功创建了的,但是无法正确的驱动。请问怎么解决?
my_sql_connection?那是驱动mysql不是sqlite的吧
不知道你这个问题是否已经解决, 如果还没有解决的话:在以前是没有出现这种错误的,以前的PyQt5的版本为5.12,但是后来电脑出了问题,版本变成了5.15,这个版本有两个问题,第一个问题是cannot found module QtWebEngine , 第二个问题是没有连接数据库的dll文件
解决没有模型QtWebEngine的方式为重新安装QtWebEngine,pip install QtWebEngine就行了。
解决没有QMYSQL Driver not loaded的问题,找到mysql数据库的安装目录,从中copy文件 libmysql.dll到pyqt5的安装目录
mysql路径为:
ibmysql.dll复制到bin目录下就行了,pyqt5的安装目录:
from PyQt5.QtSql import QSqlQuery, QSqlDatabase
db = QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('127.0.0.1')
db.setPort(3306)
db.setDatabaseName('test')
db.setUserName('root')
db.setPassword('')
if db.open():
print("打开啦")
else:
print(db.lastError().text())
就可以连接到mysql数据库了