SQLalchemy не обеспечивает соблюдение ограничений иностранного ключа [дублировать]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SQLalchemy не обеспечивает соблюдение ограничений иностранного ключа [дублировать]

Сообщение Anonymous »

Я пытаюсь играть с определением 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»