如何解决macOS下使用dataset模块时出现ModuleNotFoundError: No module named 'MySQLdb'报错
问题原因
dataset连接MySQL默认依赖MySQLdb驱动,该驱动仅适配Python 2,Python 3环境无官方兼容版本,因此会触发ModuleNotFoundError报错。
解决方案
方案1(优先推荐,无代码修改):安装mysqlclient驱动
mysqlclient是MySQLdb的Python 3适配分支,性能最优,安装后原代码无需任何修改即可运行。
macOS环境安装步骤:
- 先安装系统依赖:
brew install mysql-client - 配置环境变量(避免pip找不到mysql配置文件):
echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.zshrc source ~/.zshrc - 安装Python依赖:
pip install mysqlclient
安装完成后直接运行原有代码即可。
方案2(无需系统依赖,少量代码修改):使用pymysql替代
如果不想安装系统级的mysql依赖,可以用纯Python实现的pymysql替代MySQLdb:
- 安装pymysql:
pip install pymysql - 修改原有代码,在导入
dataset之前添加两行适配代码:import pymysql pymysql.install_as_MySQLdb() import dataset # 剩余原有代码保持不变 db = dataset.connect('mysql://root:password@127.0.0.1/dataname') table = db['users'] table.insert(dict(userid='a1344134'))
可选优化:连接串直接指定驱动
安装pymysql后,也可以不修改适配代码,直接将数据库连接串调整为指定pymysql驱动即可:
db = dataset.connect('mysql+pymysql://root:password@127.0.0.1/dataname')
内容的提问来源于stack exchange,提问作者CJ Yen
相关产品推荐
相关产品推荐

