You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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://

内容的提问来源于stack exchange,提问作者Aamir Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 09:50:34