2016-11-10 4 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)) 

Теперь я хочу, чтобы добавить ограничение уникальности через второй и четвертые области. Поэтому я добавить следующую строку в модели:

 __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

Работал! Благодаря! Я пропустил запятую! –

Смежные вопросы