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)