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

同一环境下部分Jupyter Notebook无法连接MySQL数据库求助

问题:主Jupyter Notebook无法连接MySQL,但测试Notebook可正常运行

我编写了一个爬虫脚本,用于将网站爬取的数据存储到MySQL数据库表中。此前因配置问题,我将MySQL连接代码复制到单独的Jupyter Notebook中测试,调试后该测试Notebook可正常连接数据库,但将代码整合回主Notebook后,运行脚本却抛出错误。

主Notebook相关代码

# 大量爬虫代码...

engine = sqlalchemy.create_engine("mysql+pyodbc://user:password@localhost/DATABASE?"
                                 ,echo=False)

previous_data = pd.read_sql_table('data', engine.connect())

报错信息

DBAPIError: (pyodbc.Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so' : file not found (0) (SQLDriverConnect)")

测试Notebook可正常运行的代码

engine = sqlalchemy.create_engine("mysql+pyodbc://user:password@localhost/DATABASE?"
                                 ,echo=False)

previous_data = pd.read_sql_table('data', engine.connect())

驱动文件实际存在(测试Notebook能正常连接即可证明),我已尝试以下操作:

  • 重启两个Notebook的内核以避免干扰
  • 在另一个Notebook实例化连接前,使用close()方法终止连接
  • 检查所用所有库,确保版本一致
  • 运行脚本时保持驱动文件所在目录打开,确认文件未被删除

可能的解决思路

1. 排查两个Notebook的Python环境差异

测试Notebook和主Notebook可能使用了不同的虚拟环境,导致pyodbc或sqlalchemy的安装路径/版本不一致,进而影响驱动的查找逻辑:

  • 在两个Notebook中分别执行import sys; print(sys.executable),对比Python解释器路径是否一致
  • 执行import pyodbc; print(pyodbc.drivers()),确认主Notebook中能找到对应libmyodbc8w.so的驱动(通常是MySQL ODBC 8.0 Unicode Driver)

2. 显式指定驱动路径

在连接字符串中直接指定驱动文件的绝对路径,绕过系统自动查找的差异:

engine = sqlalchemy.create_engine(
    "mysql+pyodbc://user:password@localhost/DATABASE?driver=/usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so",
    echo=False
)

3. 检查主Notebook的权限设置

主Notebook运行的用户可能没有读取驱动文件的权限,而测试Notebook的用户拥有权限。可在主Notebook中执行以下命令查看权限:

!ls -l /usr/lib/x86_64-linux-gnu/odbc/libmyodbc8w.so

若当前用户无读权限,可通过chmod命令调整文件权限(需管理员权限)。

4. 核对环境变量配置

unixODBC依赖ODBCINI和ODBCSYSINI环境变量查找配置文件,主Notebook的环境变量可能与测试Notebook不一致:

  • 在两个Notebook中分别执行!echo $ODBCINI和!echo $ODBCSYSINI对比输出
  • 若存在差异,可在主Notebook中手动设置环境变量:
import os
os.environ['ODBCSYSINI'] = '/etc'  # 请根据实际配置路径调整
os.environ['ODBCINI'] = '/etc/odbc.ini'

5. 重新安装相关依赖

若以上方法无效,尝试在主Notebook对应的Python环境中重新安装依赖:

pip uninstall pyodbc -y
pip install pyodbc

同时可重新确认MySQL ODBC驱动的安装完整性(虽然测试环境可用,但主环境可能存在文件损坏)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:57:16