【问题标题】:SQLAlchemy import errors in Pydev/EclipsePydev/Eclipse 中的 SQLAlchemy 导入错误
【发布时间】:2012-07-06 15:19:00
【问题描述】:

我尝试安装用于 Eclipse/Pydev 的 Python 3.2 的 SQLAlchemy。一个简单的测试脚本失败

from sqlalchemy.engine import create_engine
engine=create_engine("mysql://user:password@server/database")

如果我从 Eclipse 运行它,我会得到

Traceback (most recent call last):
  File "...\sqlalchemy.py", line 1, in <module>
    from sqlalchemy.engine import create_engine
  File "...\sqlalchemy.py", line 1, in <module>
    from sqlalchemy.engine import create_engine
ImportError: No module named engine

然而,我实际上是用 Ctrl-Shirt-O 生成了导入行,所以 Eclipse 会自动发现并知道它。 Pydev 也没有在脚本中显示任何错误。

如果我在交互式 Pydev 控制台中尝试相同的脚本,我会得到

from sqlalchemy.engine import create_engine
engine=create_engine("mysql://user:password@server/database")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python32\lib\site-packages\sqlalchemy-0.7.8-py3.2.egg\sqlalchemy\engine \__init__.py", line 338, in create_engine
    return strategy.create(*args, **kwargs)
  File "C:\Python32\lib\site-packages\sqlalchemy-0.7.8-py3.2.egg\sqlalchemy\engine\strategies.py", line 64, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "C:\Python32\lib\site-packages\sqlalchemy-0.7.8-py3.2.egg\sqlalchemy\connectors\mysqldb.py", line 52, in dbapi
    return __import__('MySQLdb')
ImportError: No module named MySQLdb

你知道如何让它工作吗?

【问题讨论】:

    标签: python sqlalchemy pydev


    【解决方案1】:

    答案很简单:您的主模块名为sqlalchemy.py。这是一个陷阱,在 python 2 中更容易落入 - 用与系统模块相同的名称命名您自己的模块。

    在启动时你的sqlalchemy.py被python加载为__main__模块,当第一行运行时,python重新加载sqlalchemy.py作为模块sqlalchemy;第二次运行导入行时,python 解释器已经在sys.modules 中找到了sqlalchemy,但它不包含名为engine 的变量或模块。

    为了便于修复,将 sqlalchemy.py 重命名为例如 satest.py。如需更完整的解决方案,请将您的代码组织成包。

    【讨论】:

      【解决方案2】:

      虽然第一个错误是 Antti 解释的不幸错误,但我最终也解决了另一个问题。我没有安装 MySQLdb,这又需要一个 MySQL 服务器。相反,我有正确语法的 mysql-connector

      engine=create_engine("mysql+mysqlconnector://...")
      

      我在寻找快速测试示例时没有看到这个。

      【讨论】:

        猜你喜欢
        • 2011-09-30
        • 2015-04-09
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 2011-12-19
        • 2011-04-21
        • 2016-01-21
        • 2013-10-28
        相关资源
        最近更新 更多