繁体   English   中英

Pydev / Eclipse中的SQLAlchemy导入错误

[英]SQLAlchemy import errors in Pydev/Eclipse

我尝试安装用于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

你有一个如何使它工作的想法吗?

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

在启动时,您的sqlalchemy.py由python作为__main__模块加载,并且在第一行运行时,python将sqlalchemy.py作为模块sqlalchemy重新加载; 进口线运行Python解释器,第二次已经发现sqlalchemysys.modules ,但它不包含变量或模块命名的engine

对于简单的办法更名sqlalchemy.py到例如satest.py 要获得更完整的解决方案,请在程序包中组织代码。

正如Antti解释的那样,第一个错误是一个不幸的错误,我终于也解决了另一个问题。 我没有安装MySQLdb,而MySQLdb再次需要MySQL Server。 相反,我有正确的语法是的mysql-connector

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM