ubuntu pyqt5连接mysql数据库出错的解决方法
在使用pyqt5连接mysql数据库时,出现连接错误:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
解决方法是,进入sql驱动目录,能找到共享库 libqsqlmysql.so
/usr/local/lib/python3.6/dist-packages/PyQt5/Qt/sqldrivers,运行终端命令
ldd libqsqlmysql.so
显示下列所需文件,可知缺少libmysqlclient.so.18, 需要找到该文件并安装。
网上搜索吧,找到了这个:
https://launchpad.net/ubuntu/xenial/amd64/libmysqlclient18/5.6.25-0ubuntu1
下载右侧libmysqlclient18_5.6.25-0ubuntu1_amd64.deb,注意数字0ubuntu1
安装 sudo dpkg -i libmysqlclient18_5.6.25-0ubuntu1_amd64.deb
此安装将libmysqlclient.so.18装到 /usr/lib/x86_64-linux-gnu,此目录下还有
libmysqlclient.so.20和libmysqlclient.so.21,这可能是我安装mysql 8.0时产生。曾试过用软链接使这两个共享库分别替代libmysqlclient.so.18但不成功。
安装会将libmysqlclient.so.18放到目录
/usr/lib/x86_64-linux-gnu,如果你不是这个目录,只好自己想办法啦啦啦。
运行ldd libqsqlmysql.so看到共享库关系已经成功。
OK
连接mysql数据库,连接成功。
db = QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('localhost')
db.setDatabaseName('mydatabase1')
db.setUserName('root')
db.setPassword('******')
ok = db.open()
if not ok:
print(db.lastError().text())
后记:
系统:ubuntu18.04
数据库:mysql 8.0
pyqt5版本:5.12.0
python版本:python3.6
我安装的系统和软件模块算比较新的,也是这些新版带来无穷烦恼。
按照pyqt5的安装: sudo pip3 install pyqt5
安装的版本是 pyqt 5.14.1 ,可这个新版怎么安装都没有mysql的驱动libqsqlmysql.so,无奈之下只好退回去安装5.12.0
sudo pip3 install pyqt5==5.12.0