安装sqlalchemy-access后运行Access数据库脚本仍触发NoSuchModuleError: sqlalchemy.dialects:access.pyodbc错误的求助
看起来你遇到了环境不匹配或者插件注册异常的问题,我之前也碰到过类似的情况,试试下面几个排查和解决步骤:
确认Spyder使用的Python环境与安装包的环境一致
Anaconda的多虚拟环境很容易搞混,你在Anaconda提示符里安装的sqlalchemy-access可能不在Spyder当前运行的环境中。
打开Spyder的IPython控制台,输入!pip list | findstr access,如果看不到sqlalchemy-access 1.1.3的记录,就说明环境不匹配。
解决办法:要么在Spyder内置的终端里重新执行pip install sqlalchemy-access,要么通过Spyder的「工具>偏好设置>Python解释器」切换到你安装了目标包的环境。手动注册SQLAlchemy插件
有时候插件不会被SQLAlchemy自动识别,你可以在脚本最开头添加一段代码强制注册:from sqlalchemy.dialects import registry registry.register("access.pyodbc", "sqlalchemy_access.pyodbc", "AccessDialect_pyodbc")加完这段代码后再运行你的数据库操作逻辑,应该就能正常加载插件了。
检查依赖包pyodbc是否安装
sqlalchemy-access依赖pyodbc实现与Access数据库的连接,可能你遗漏了这个必要依赖。
在Anaconda提示符里执行pip list | findstr pyodbc,如果没有输出结果,就安装它:pip install pyodbc。如果已经安装,确保版本为4.0及以上,这个版本和sqlalchemy-access 1.1.3的兼容性最佳。验证系统的Access ODBC驱动
最后别忘了检查系统是否安装了Access的ODBC驱动。打开Windows的「ODBC数据源管理器」(注意选择32位或64位版本,要和你的Python版本一致),查看列表中是否存在Microsoft Access Driver (*.mdb, *.accdb)。
如果没有,需要安装Microsoft Access Runtime或者Office套件中的ODBC驱动,务必保证驱动位数与Python版本匹配,否则即使安装了所有Python包也无法连接数据库。
内容的提问来源于stack exchange,提问作者Nitzan

