Windows系统下使用SQLAlchemy无法连接本地MySQL数据库的问题
解决SQLAlchemy连接MySQL时出现的"Unknown system variable 'tx_isolation'"错误
嘿,我之前也碰到过一模一样的问题!咱们来拆解下原因,然后快速解决它。
问题根源
你用的mysql+mysqldb对应的驱动是MySQL-python(也叫mysqldb),这个驱动的版本比较老旧,它还在尝试使用tx_isolation这个系统变量——但新版本的MySQL(尤其是8.0+)已经把这个变量改名为transaction_isolation了,所以才会抛出这个未知变量的错误。而你用的PyMySQL是比较新的纯Python驱动,已经适配了这个变量名的变更,所以能正常连接。
解决方案
这里给你两个靠谱的解决方向,优先推荐第一个:
1. 改用PyMySQL作为SQLAlchemy的驱动
既然你已经确认PyMySQL能正常连接数据库,直接把SQLAlchemy的连接字符串里的驱动部分改成mysql+pymysql就行:
from sqlalchemy import create_engine # 把mysql+mysqldb替换成mysql+pymysql engine = create_engine('mysql+pymysql://root:mypass@localhost/classicmodels') engine.connect()
如果你的环境还没装PyMySQL,先执行这个命令安装:
pip install pymysql
2. 升级/替换mysqldb驱动(不推荐)
如果你坚持要用mysqldb驱动,可以尝试升级到它的分支版本mysqlclient(这是mysqldb的Python3兼容分支,已经修复了这个变量名的问题):
pip install mysqlclient
安装后,连接字符串还是用mysql+mysqldb就行,因为SQLAlchemy会自动识别mysqlclient作为mysqldb的替代。不过这个方式需要你的系统有MySQL的编译依赖,可能会遇到安装问题,所以还是优先用第一种方案更省心。
内容的提问来源于stack exchange,提问作者Ron
相关产品推荐
相关产品推荐

