2014-01-16 18 views
5

Python SQLAlchemyアプリケーションで突然エラーが発生し始めました。私のコードは次のようになります。Integerを持つ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 connectionsessionBaseColumn、およびIntegerのすべてを調べる限り、私は正常に見えます。

+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

関連する問題