Если у меня есть декларативная модель SQLAlchemy, как показано ниже:
class Test(Model):
__tablename__ = 'tests'
id = Column(Integer, Sequence('test_id_seq'), primary_key=True)
...
Atest_id = Column(Integer, ForeignKey('Atests.id'), nullable=True)
Btest_id = Column(Integer, ForeignKey('Btests.id'), nullable=True)
Ctest_id = Column(Integer, ForeignKey('Ctests.id'), nullable=True)
Dtest_id = Column(Integer, ForeignKey('Dtests.id'), nullable=True)
Etest_id = Column(Integer, ForeignKey('Etests.id'), nullable=True)
...
date = Column(DateTime)
status = Column(String(20)) # pass, fail, needs_review
И я хотел бы убедиться, что в данной строке присутствует только один из внешних ключей *test_id
, как я могу выполнить это в SQLAlchemy
?
Я вижу, что есть объект SQLAlchemy
CheckConstraint
(см. docs), но MySQL
не поддерживает контрольные ограничения.
Модель данных имеет взаимодействие вне SQLAlchemy
, поэтому предпочтительнее будет проверка уровня базы данных (MySQL
)