Этот вопрос закрыт для ответов, так как повторяет вопрос Почему не срабатывает ограничение ForeignKey в SQLite?
@beduin01

Почему не срабатывает ограничение ForeignKey в SQLAlchemy?

Следующая модель подходит для копипаста. Не могу разобраться, почему не срабатывает ограничение по ForeignKey.

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///')
Session = sessionmaker(bind=engine)
sess = Session()
Base = declarative_base()

class Users(Base):
	__tablename__ = 'mans'
	id = Column(Integer, primary_key=True)
	user_id = Column(Integer, ForeignKey("address.id"))
	name = Column(String)
	age = Column(Integer)
	
class Address(Base):
	__tablename__ = 'address'
	id = Column(Integer, primary_key=True)
	email = Column(String)

Base.metadata.create_all(engine)

user1 = Users(id=1, user_id=2, name='Mike', age=21)
adr1 = Address(id=1, email='test@mail.ru')


sess.add(user1)
sess.add(adr1)

sess.commit()
x = sess.query(Users).filter(Users.id>0).first()

print(x.name)


Я же поставил ограничение на:
user_id = Column(Integer, ForeignKey("address.id"))

и вот тут пытаюсь обратиться к несуществующему ключу:
user1 = Users(id=1, user_id=2, name='Mike', age=21)


user_id=2 же у меня нет, но код успешно отрабатывает. Почему?
  • Вопрос задан
  • 72 просмотра
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы