ubuntu pyqt5连接mysql数据库出错的解决方法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值