У меня здесь мало проблем
1) Какова цель вашей ручной работы __init__
? Если он выполняет только то, что вы написали, вы можете полностью опустить конструктор, поскольку механизм SQLAlchemy автоматически генерирует один и тот же конструктор для всех ваших моделей. Хотя, если вы предпримете некоторые дополнительные действия и, следовательно, должны переопределить __init__
, вы, вероятно, захотите вызвать супер-конструктор:
def __init__(self, lalala, *args, **kwargs):
# do something with lalala here...
super(test, self).__init__(*args, **kwargs)
# ...or here
2) Если у вас есть более одного поля с primary_key=True
, вы получите модель с составным первичным ключом. Составные первичные ключи не генерируются автоматически, поскольку здесь есть неоднозначность: чем должен отличаться последующий ключ от предыдущего?
Я подозреваю, что то, что вы пытаетесь, может быть достигнуто с помощью уникального индексированного столбца и без использования составного ключа:
class test(Base):
__tablename__ = 'test'
id = Column(Integer, primary_key=True)
id2 = Column(String, index=True, unique=True)
title = Column(String)
# def __init__(self) is not necessary