2016-11-10 52 views
3

私は次のSQLAlchemyモデルを持っています。SQLAlchemyエラーが発生するのはなぜですか? "__table_args__の値はタプル、dict、またはNoneでなければなりません"

class MyClassA(db.Model, Timestamp): 
    a_id = db.Column(db.Integer, nullable=False, primary_key=True) 
    b_id = db.Column(db.Integer, db.ForeignKey(C.c_id), nullable=False) 
    d = db.Column(db.String(1024)) 
    e_id = db.Column(db.Integer, 
         db.ForeignKey(e.e_id)) 

ここで、2番目と4番目のフィールドに一意性制約を追加したいとします。だから私は、モデルに次の行を追加します。

 __table_args__ = db.UniqueConstraint('b_id', 'e_id', name='unique_constraint_bid_eid') 

をしかし、私はそれを移行しようとすると、今、私は次のエラーを取得する:

sqlalchemy.exc.ArgumentError: __table_args__ value must be a tuple, dict, or None 

は、なぜ私はこのエラーを取得していますか?それをどうやって修正することができますか?私は、方程式の右辺を括弧で入れてみましたが、それは修正されませんでした。

+0

'__table_args__ =(db.UniqueConstraint(「B_ID」をしてみてください、 'e_id'、name = 'unique_constraint_bid_eid'))) – sobolevn

答えて

5

table_argsは、エラーコードが示唆するようにタプル、dict、またはNoneとします。あなたはそれタプル作るなら、あなたは括弧であなたの値を入れても、最後にそこにカンマを持っている必要があります。

試してみてください。

 __table_args__ = (db.UniqueConstraint('b_id', 'e_id', name='unique_constraint_bid_eid'),) 
+0

Worked!ありがとう!私はコンマを見逃していた! –

関連する問題