2014-01-16 31 views
5

我突然在我的Python SQLAlchemy應用程序中看到一個錯誤,我無法弄清楚是什麼導致了它。我的代碼如下所示:SQLAlchemy整數錯誤:「object()不帶任何參數」

from sqlalchemy import create_engine 
from sqlalchemy import Column 
from sqlalchemy import ForeignKey 
from sqlalchemy import Integer 
from sqlalchemy import MetaData 
from sqlalchemy.ext.declarative import declarative_base 

def loadConnection(connection_string, echo=False): 
    engine = create_engine(connection_string, echo=echo) 
    Base = declarative_base(engine) 
    Session = sessionmaker(bind=engine) 
    session = Session() 
    return session, Base 

connection = yaml.load('connection.yaml') 
session, Base = loadConnection(connection['connection'], connection['echo']) 

class Foo(Base): 
    __tablename__ = 'foo' 
    id = Column(Integer(11), primary_key=True) 

當我運行該腳本,我得到以下錯誤:

Traceback (most recent call last): 
    File "ephem/database_interface.py", line 52, in <module> 
    class Foo(Base): 
    File "ephem/database_interface.py", line 54, in Foo 
    id = Column(Integer(11), primary_key=True) 
TypeError: object() takes no parameters 

我使用SQLAlchemy的0.9.1。我的後端是在本地主機上運行的MySQL。據我所知,通過檢查pdb connectionsessionBaseColumnInteger都顯得很正常。

+2

根據[docs](http://docs.sqlalchemy.org/en/rel_0_9/core/types.html#sqlalchemy.types.Integer),「Integer」沒有參數。 – alecxe

回答

7

Integer不帶參數。這是版本0.9的變化。

改爲存在BigIntegerSmallInteger

+3

請注意,它在0.8版本中使用了參數:[docs](http://docs.sqlalchemy.org/en/rel_0_8/core/types.html#sqlalchemy.types.Integer)。 – alecxe

+0

^^^ @alecxe AH-HA!本週我必須重建我的python環境。我敢打賭,把我從0.8升級到了0.9,沒有我注意到! – ACV

+1

@ACV,是的,這就是爲什麼最好用精確的包版本來凍結項目需求 - 誰知道你的依賴關係中會發生什麼變化。 – alecxe

相關問題