折腾到爆炸了!暂时只能把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”相关推荐

  1. 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数据库时,还是提 ...

  2. Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法

    Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法 出现这个错误,导致的原因有很多,所以不妨先试试我找的这种解决方法,我也是试过 ...

  3. navicat 远程连接docker mysql提示:Authentication plugin ‘caching_sha2_password‘ cannot be loaded

    navicat 远程连接docker mysql提示:Authentication plugin 'caching_sha2_password' cannot be loaded 1.docker启动 ...

  4. net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法

    net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法 参考文章: (1)net start mysql启动mysql,提示发生系统错误 5 拒绝访问 解决方法 (2) ...

  5. ArcSDE直连提示Server library could not be loaded解决方法

    服务器安装Oracle11g,ArcGIS10.1,ArcSDE10.1 for Oracle11g 客户机安装ArcGIS10.0,Oracle client 11g 32位 最开始在客户机中使用A ...

  6. could not load java7_xml导入properties文件报异常:Could not load JDBC driver class [${jdbc.driver}]...

    突然遇上一个很奇怪的问题 applicationContext-dao.xml在创建dataSource时无法使用表达式${jdbc.driver} tomcat在启动时会报一大段异常(异常信息放在问 ...

  7. 为什么进mysql需要用户和密码了_centos5安装 mysql 提示需要用户及密码进入?

    有朋友在centos 5 上安装mysql 一切正常,也能正常启动.就是无法进入mysql 提示Duplicate entry 'localhost-' for key 1 需要用户名及密码,可是新安 ...

  8. cmd输入net start mysql提示:服务名无效(解决方案笔记)

    问题:net start mysql提示服务名无效 1.以管理员权限(很重要)打开cmd,进入到mysql的bin目录下,输入mysqld.exe --install,出现Service succes ...

  9. mac mysql not found_mac下mysql提示command not found解决

    原标题:mac下mysql提示command not found解决 问题描述 输入mysql -u root -p会出现:zsh: command not found: mysql的提示,此时需要配 ...

最新文章

  1. Python链接MySQL
  2. CBS电信项目中的三户一品总结
  3. jquery 中 fn.apply(this, arguments)是什么函数?有什么作用?能举个例子吗
  4. soa示例_SOA示例应用程序
  5. mysql sysdate本周_oracle 、mysql 取昨天 前天 本周 数据
  6. python语言易错知识点强化
  7. mfc打开指定路径下指定类型文件_Windows 网络编程:文件操作
  8. 做不完了吧,做不出了吧!
  9. DEBUG -- CLOSE BY CLIENT STACK TRACE问题的两种解决方案,整理自网络
  10. 具体数学-第11课(Stern-Brocot树和同余关系)
  11. Lesson 08 for Plotting in R for Biologists
  12. 诺基亚再做手机,没有机会
  13. 【Redis】笔记(尚硅谷、黑马整合)
  14. [JAVA学习] JDK与JRE的区别
  15. QT设置窗体标题及背景颜色
  16. VM+Lamp环境搭建
  17. Human Pose Estimation姿态估计调研
  18. Win10 C盘清理的技巧,将C盘中除Windows外的所有系统文件夹移到C盘之外,节约大部分C盘空间
  19. 计算机英语it英语,计算机英语 IT专业英语词典 11
  20. UVA 11549 模拟 Floyed判圈法的应用 Calculator Conundrum

热门文章

  1. Redis快速创建conf配置文件
  2. JAVA 图片添加内容
  3. 谷歌清楚缓存快捷键_谷歌浏览器快捷键和小技巧大全(非常实用)
  4. java 免费图表控件_给你一杯java润润喉 10款免费的图表JS插件
  5. 什么是财务数字化-数字化转型网
  6. 2.19 hypermesh的学习
  7. pycharm的环境配置
  8. js练习6 --- DOM文本节点的操作、动态脚本、动态样式、操作表格
  9. 【笔记】手敲版 TF IDF
  10. 微信公众号怎么上传文档附件?