pyqt使用mysql提示 “Driver not loaded Driver not loaded”
折腾到爆炸了!暂时只能把PyQt5版本降到 5.12.2 使用 (所包含的QT版本是5.12.3)
QT链接MYSQL需要两个桥梁:qsqlmysql.dll、 libmysql.dll (前者是驱动,后者是扩展包[接口库])
但PyQt中这两个文件都没有提供。关于这点,官方有说明:https://doc.qt.io/qt-5/sql-driver.html#qmysql (由于版权的关系在5.12版后就不再提供MySQL驱动程序,所以用户需要自己编译)
百度、google试了各种方法,最常见的方案是:
1、安装QT(安装的这个QT的版本 与 PyQt、PySide2中的那个QT的版本 要相同)
2、对QT提供mysql.pro源文件进行编译,得到驱动dll
视频教程:(哔哩哔哩搜索关键词: 'QT MYSQL')
https://www.bilibili.com/video/BV1Jk4y167tt ([QT 5.14.2]【经验分享】Qt连接Mysql)
https://www.bilibili.com/video/BV17z411z7T2 (QT5.12.9连接MySQL8.0开发示例)
详细讲解:
https://stackoverflow.com/questions/64056483/unable-to-load-qmysql-driver-on-pyside2
而最简单直接的方法是:
1、检查自己的QT版本,然后百度别人针对这个版本编译好的现成驱动,下载。
【传送门:https://github.com/thecodemonkey86/qt_mysql_driver/releases (很多版本都有)】
2、把找来的两个文件粘帖到对应目录。
//版本获取方式:
//PyQt5
python -c "from PyQt5.QtCore import QT_VERSION_STR; print('Qt version', QT_VERSION_STR)"//PySide2
python -c "from PySide2.QtCore import qVersion; print('Qt version', qVersion())"//目录获取方式:
//PyQt5:
python -c "import os; from PyQt5.QtCore import QLibraryInfo; print('QT_SQL_DRIVER_PATH', os.path.join(QLibraryInfo.location(QLibraryInfo.PrefixPath), 'plugins', 'sqldrivers'))"//PySide2:
python -c "import os; from PySide2.QtCore import QLibraryInfo; print('QT_SQL_DRIVER_PATH', os.path.join(QLibraryInfo.location(QLibraryInfo.PrefixPath), 'plugins', 'sqldrivers'))"
有我不想安装QT,又百度不到现成的5.15.2,所以尝试了降版本的方式:
1、卸载现有版本,安装有提供 qsqlmysql.dll 的最后一个PyQt5版本 5.12.2
pip uninstall PyQt5
pip install PyQt5==5.12.2
2、把mySql5.7的 libmysql.dll、libmysql.lib 拷贝到 site-packages\PyQt5\Qt\bin 中
3、安装这个版本后发现运行提示:
from PyQt5.QtSql import QSqlDatabase
ImportError: DLL load failed while importing QtSql: 找不到指定的模块。
pycharm中代码就红色波浪线提示:
Cannot find reference 'QtCore' in '__init__.py | __init__.py'
折腾一轮后,解决办法是:把高版本的init__.py 中的内容复制粘帖到低版本的init__.py中 (就是以下这段,其中第7行的'\\Qt5\\bin' 改为 '\\Qt\\bin')
def find_qt():import os, sysqtcore_dll = '\\Qt5Core.dll'dll_dir = os.path.dirname(sys.executable)if not os.path.isfile(dll_dir + qtcore_dll):path = os.environ['PATH']dll_dir = os.path.dirname(__file__) + '\\Qt\\bin'if os.path.isfile(dll_dir + qtcore_dll):path = dll_dir + ';' + pathos.environ['PATH'] = pathelse:for dll_dir in path.split(';'):if os.path.isfile(dll_dir + qtcore_dll):breakelse:returntry:os.add_dll_directory(dll_dir)except AttributeError:passfind_qt()
del find_qt
运行成功。
还有一个方案是使用ODBC,在odbc设置中加入mysql。设置方法参考请百度
-------
其他:
期间遇到过的其他一些坑:
1、把5.12.2 的qsqlmysql.dll 拷贝到 5.15.2 中,用官网下载的 libmysql.dll ,没有提示 Driver not loaded 了,但执行结果是 Process finished 1073740791 (0xC0000409) 。--->折腾了一轮,无解!
参考:
https://blog.csdn.net/m15814478834/article/details/49902077 QMYSQL driver not loaded 的原理和解决办法
https://blog.csdn.net/qq_34769196/article/details/103898208 PyQt5使用QSqlDatabase类连接Mysql的坑:QMYSQL driver not loaded
gitub上找到现成可以下载的驱动(各版本):
https://github.com/thecodemonkey86/qt_mysql_driver/releases
其中我下载了5.15.2版本
pyqt使用mysql提示 “Driver not loaded Driver not loaded”相关推荐
- PyQt5 使用QSqlDatabase连接Mysql数据库时Driver not loaded Driver not loaded
相关版本说明: python版本:Python 3.6.5 PyQt5版本:PyQt5 5.11.3 PyQt5 5.11.3 是有 qsqlmysql.dll 的 但是连接mysql数据库时,还是提 ...
- Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法
Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法 出现这个错误,导致的原因有很多,所以不妨先试试我找的这种解决方法,我也是试过 ...
- navicat 远程连接docker mysql提示:Authentication plugin ‘caching_sha2_password‘ cannot be loaded
navicat 远程连接docker mysql提示:Authentication plugin 'caching_sha2_password' cannot be loaded 1.docker启动 ...
- net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法
net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法 参考文章: (1)net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法 (2) ...
- ArcSDE直连提示Server library could not be loaded解决方法
服务器安装Oracle11g,ArcGIS10.1,ArcSDE10.1 for Oracle11g 客户机安装ArcGIS10.0,Oracle client 11g 32位 最开始在客户机中使用A ...
- could not load java7_xml导入properties文件报异常:Could not load JDBC driver class [${jdbc.driver}]...
突然遇上一个很奇怪的问题 applicationContext-dao.xml在创建dataSource时无法使用表达式${jdbc.driver} tomcat在启动时会报一大段异常(异常信息放在问 ...
- 为什么进mysql需要用户和密码了_centos5安装 mysql 提示需要用户及密码进入?
有朋友在centos 5 上安装mysql 一切正常,也能正常启动.就是无法进入mysql 提示Duplicate entry 'localhost-' for key 1 需要用户名及密码,可是新安 ...
- cmd输入net start mysql提示:服务名无效(解决方案笔记)
问题:net start mysql提示服务名无效 1.以管理员权限(很重要)打开cmd,进入到mysql的bin目录下,输入mysqld.exe --install,出现Service succes ...
- mac mysql not found_mac下mysql提示command not found解决
原标题:mac下mysql提示command not found解决 问题描述 输入mysql -u root -p会出现:zsh: command not found: mysql的提示,此时需要配 ...
最新文章
- Python链接MySQL
- CBS电信项目中的三户一品总结
- jquery 中 fn.apply(this, arguments)是什么函数?有什么作用?能举个例子吗
- soa示例_SOA示例应用程序
- mysql sysdate本周_oracle 、mysql 取昨天 前天 本周 数据
- python语言易错知识点强化
- mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作
- 做不完了吧,做不出了吧!
- DEBUG -- CLOSE BY CLIENT STACK TRACE问题的两种解决方案,整理自网络
- 具体数学-第11课(Stern-Brocot树和同余关系)
- Lesson 08 for Plotting in R for Biologists
- 诺基亚再做手机,没有机会
- 【Redis】笔记(尚硅谷、黑马整合)
- [JAVA学习] JDK与JRE的区别
- QT设置窗体标题及背景颜色
- VM+Lamp环境搭建
- Human Pose Estimation姿态估计调研
- Win10 C盘清理的技巧,将C盘中除Windows外的所有系统文件夹移到C盘之外,节约大部分C盘空间
- 计算机英语it英语,计算机英语 IT专业英语词典 11
- UVA 11549 模拟 Floyed判圈法的应用 Calculator Conundrum