2012-07-06 96 views
2

我嘗試安裝SQLAlchemy for Python 3.2,我使用Eclipse/Pydev。一個簡單的測試腳本失敗Pydev/Eclipse中的SQLAlchemy導入錯誤

from sqlalchemy.engine import create_engine 
engine=create_engine("mysql://user:[email protected]/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恤-O進口線,讓Eclipse中發現,自動和知道它。 Pydev也不會在腳本中顯示任何錯誤。

如果我嘗試在互動Pydev的控制檯相同的腳本,我得到

from sqlalchemy.engine import create_engine 
engine=create_engine("mysql://user:[email protected]/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 

你有一個想法如何得到它的工作?

回答

5

答案很簡單:您的主模塊名爲sqlalchemy.py。這是一個更容易陷入python 2中的陷阱 - 通過與系統模塊相同的名稱命名您自己的模塊。

在啓動您的sqlalchemy.py被蟒蛇裝入爲__main__模塊,並且當第一線運行,蟒蛇重載sqlalchemy.py作爲模塊sqlalchemy;第二次運行導入行時,python解釋器已在sys.modules中找到sqlalchemy,但它不包含名爲engine的變量或模塊。

爲了便於修復重命名sqlalchemy.py爲例如satest.py。要獲得更完整的解決方案,請將代碼組織到包中。

1

儘管Antti解釋了第一個錯誤是一個不幸的錯誤,但我終於也解決了另一個問題。我沒有安裝MySQLdb,它需要一個MySQL服務器。相反,我有mysql連接器的正確語法是

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

我沒有看到這個,而尋找快速測試的例子。