0

I have got next (copy-past ready) model:

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)

I can't understand why it's working if I have ForeignKey constrains:

user_id = Column(Integer, ForeignKey("address.id"))

And on this line trying to access to nonexistent key:

user1 = Users(id=1, user_id=2, name='Mike', age=21)
Dmitry Bubnenkov
  • 9,415
  • 19
  • 85
  • 145
  • Possible duplicate of [Sqlite / SQLAlchemy: how to enforce Foreign Keys?](https://stackoverflow.com/questions/2614984/sqlite-sqlalchemy-how-to-enforce-foreign-keys) – Ilja Everilä Apr 04 '18 at 17:25
  • https://stackoverflow.com/questions/31794195/how-to-correctly-add-foreign-key-constraints-to-sqlite-db-using-sqlalchemy – Ilja Everilä Apr 04 '18 at 17:25

0 Answers0