使用Scrapy导入数据到MySQL时出现No module named MySQLdb错误求助
解决Python 2.7环境下Scrapy提示"No module named MySQLdb"的问题
首先得明确:你安装的Connector/Python(mysql-connector-python)和报错里的MySQLdb是两个完全不同的Python MySQL连接库,它们的导入名称和用法都不一样,这就是为什么你装了Connector/Python但还是无法import MySQLdb的原因。下面针对你的Miniconda+Python2.7环境,给出几种可行的解决办法:
方法一:安装真正的MySQLdb包(推荐)
MySQLdb在Python2.7对应的包名为mysql-python,你需要在激活的Miniconda环境中安装它:
- 打开Anaconda Prompt,先激活你的Python2.7环境(假设环境名为
py27,如果不知道环境名可以用conda env list查看):conda activate py27 - 尝试用conda安装(如果conda源有这个包的话):
conda install mysql-python - 如果conda安装失败,改用pip安装:
pip install mysql-python注意:Windows下安装
mysql-python可能需要依赖Microsoft Visual C++ 9.0(Python2.7的编译工具),如果出现编译错误,可以直接下载对应版本的预编译wheel包,然后用pip install 文件名.whl安装。
安装完成后,再在Python Shell里执行import MySQLdb,应该就不会报错了。
方法二:改用已安装的mysql-connector-python
如果你不想折腾MySQLdb的安装,可以直接修改Scrapy项目中的数据库连接代码,改用你已经安装的mysql-connector-python:
- 将代码中的
import MySQLdb替换为:import mysql.connector - 调整数据库连接的代码逻辑,比如原来的MySQLdb连接写法:
改成mysql-connector-python的写法:conn = MySQLdb.connect( host='你的数据库地址', user='用户名', passwd='密码', db='数据库名' )
后续的游标操作等用法基本一致,个别细节差异可以参考mysql-connector-python的官方文档调整。conn = mysql.connector.connect( host='你的数据库地址', user='用户名', password='密码', database='数据库名' )
额外检查:确认包安装在正确的环境中
有时候你可能在全局Python环境装了包,但Miniconda的虚拟环境并没有读取到。激活你的Python2.7环境后,执行以下命令查看已安装的包:
conda list # 或者用pip查看 pip list
确认mysql-python或mysql-connector-python出现在列表中,这样Scrapy才能在该环境中找到对应的模块。
内容的提问来源于stack exchange,提问作者EmiliOrtega
相关产品推荐
相关产品推荐

