SQLAlchemy无处不在地停止使用MySQLdb

时间:2017-10-28 04:02:40

标签: python mysql mysql-python

在过去的几天里,它一直很好。但今天,我正在尝试解决一些编码问题,它突然停止工作。我将我的代码恢复到之前的状态,但由于某种原因,错误仍然存​​在。 (遗憾的是编码问题也是如此。)

我在Python 3.6.2和Anaconda上使用MySQL和MySQLdb。我知道MySQLdb与Python 3和Anaconda不兼容。但是,我不想使用Python 2或不同的驱动程序。

我通过安装mysqlclient解决了这个问题,我可以在Qt控制台中执行import MySQLdb。我还能在30分钟前用字面上的代码创建一个引擎。

from sqlalchemy import create_engine
engine = create_engine('mysql://user:pass@localhost:3306/db?charset=utf8')

我用远程仓库上的代码检查了我的代码,以确保没有错误。它完全相同。但是现在我收到了以下错误:

NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:mysql
考虑到我有两个,这似乎很奇怪。当我在带有%run myscript.py的Qt控制台中运行我的脚本时,会看到此错误。我从昨天起就一直这样做,没有任何问题。

我没有使用任何虚拟环境,因为我发现在Windows和Anaconda上管理它们很痛苦。在运行脚本之前,我还检查了MySQLdb是否可以在控制台中导入。所以我知道模块已正确安装。

我试图找出发生了什么,在调查过程中我发现我缺少sqlalchemy.connectors模块,但我不确定这是否真的是一个问题,因为我找不到任何问题在线类似的问题。以下是我为解决这个错误所做的工作:

from sqlalchemy.dialects import mysql
ModuleNotFoundError: No module named 'sqlalchemy.connectors'

有谁知道这是什么问题?这真是令人沮丧,因为这似乎完全是蓝色的:/

**我刚刚测试了其他驱动程序是否有效(即pymysql),但事实并非如此。我认为这是因为sqlalchemy拒绝方言而不管司机。

编辑:要重现(至少在我的机器上),我只需要2行。

from sqlalchemy import create_engine
engine = create_engine('mysql://user:pass@localhost:3306/db')

EDIT2:我认为这是一个Anaconda问题,但我仍然不确定原因是什么。

1 个答案:

答案 0 :(得分:0)

清除重新安装sqlalchemy已解决此问题。 不敢相信这不是我尝试过的第一件事。 但我仍然不知道它是如何被破坏的。

$ conda uninstall sqlalchemy
$ conda install sqlalchemy