使用SQLAlchemy连接MySQL报错No module named 'MySQLdb',需安装MySQLdb吗?
解决SQLAlchemy连接MySQL时的"No module named 'MySQLdb'"错误
核心结论
不需要强制安装MySQLdb,你已安装的mysql-connector可以直接用来建立连接,只需修改连接URL的驱动标识即可。
问题原因
你代码中使用的mysql://作为URL前缀,SQLAlchemy会默认尝试加载MySQLdb驱动,但你未安装该包,因此触发报错。而mysql-connector对应有专属的URL前缀格式。
解决方案
修改create_engine的URL前缀,替换为mysql-connector对应的格式:
- 若你安装的是
mysql-connector-python包,URL前缀应为mysql+mysqlconnector://
修改后的完整代码示例:
from sqlalchemy import create_engine # DEFINE THE DATABASE CREDENTIALS user = '' password = '' host = '' port = 3306 database = '' # PYTHON FUNCTION TO CONNECT TO THE MYSQL DATABASE AND # RETURN THE SQLACHEMY ENGINE OBJECT def get_connection(): return create_engine( url="mysql+mysqlconnector://{0}:{1}@{2}:{3}/{4}".format( user, password, host, port, database ) ) if __name__ == '__main__': try: # GET THE CONNECTION OBJECT (ENGINE) FOR THE DATABASE engine = get_connection() print( f"Connection to the {host} for user {user} created successfully.") except Exception as ex: print("Connection could not be made due to the following error: \n", ex)
额外说明
- 若后续想切换到MySQLdb,可安装其现代兼容分支包
mysqlclient(执行pip install mysqlclient),此时可继续使用mysql://前缀。 - 常见MySQL驱动对应的SQLAlchemy URL前缀:
- MySQLdb/mysqlclient:
mysql:// - mysql-connector-python:
mysql+mysqlconnector:// - PyMySQL:
mysql+pymysql://
- MySQLdb/mysqlclient:
内容的提问来源于stack exchange,提问作者Aamir Khan
相关产品推荐
相关产品推荐

