Я пытаюсь играть с определением DB на основе SQL Alchemy Orm.
Я определил свои таблицы следующим образом < /p>
class Customer(Base):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
name = Column(String(80))
auth = relationship("CustomerAuth", backref='customer')
class CustomerAuth(Base):
__tablename__ = 'authentication'
id = Column(Integer, ForeignKey('customer.id'))
username = Column(String(80), primary_key=True)
passwd = Column(String(80))
< /code>
Теперь я создаю сеанс < /p>
Session = sessionmaker(bind=sqla.engine)
session = Session()
< /code>
А затем я пытаюсь создать два объекта строки для клиента с идентификатором 1 и 2 < /p>
cst1 = sqla.Customer(id=1,name='shyam')
cst2 = sqla.Customer(id=2,name='ram')
< /code>
И я создаю три объекта строки для Customerauth, что ссылается на ID 1, 2 и 3 клиента < /p>
auth1 = sqla.CustomerAuth(id=1,username='shyamu',passwd='wam')
auth2 = sqla.CustomerAuth(id=2,username='ramu',passwd='dam')
auth3 = sqla.CustomerAuth(id=3,username='lamu',passwd='sam')
< /code>
Как видите, я создал строку Customerauth с id = 3, который является иностранным ключом, ссылающимся на Customer.id. Но поскольку таблица клиентов не имеет записи с id = 3, это должно пройти неудачу < /p>
session.add(cst1)
session.add(cst2)
session.add(auth1)
session.add(auth2)
session.flush()
< /code>
Эта операция должна пройти неудачу, но она успешно проходит. < /p>
session.add(auth3)
session.flush()
< /code>
Я хочу знать, что я не делаю, что обходит правоприменение внешнего ключа < /p>
Заранее < /p>
Подробнее здесь: https://stackoverflow.com/questions/167 ... constraing
SQLalchemy не обеспечивает соблюдение ограничений иностранного ключа [дублировать] ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Нарушение ограничений иностранного ключа при удалении выполнения процесса
Anonymous » » в форуме JAVA - 0 Ответы
- 11 Просмотры
-
Последнее сообщение Anonymous
-