from sqlalchemy import ( create_engine, Column, ForeignKey, ) from sqlalchemy import ( Integer, String, ) from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import ( relationship, sessionmaker, ) Base = declarative_base() class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True, nullable=False) name = Column(String, unique=True, nullable=False) class Group(Base): __tablename__ = 'group' id = Column(Integer, primary_key=True, nullable=False) name = Column(String, unique=True, nullable=False) owner_id = Column(Integer, ForeignKey('user.id')) owner = relationship('User', backref='groups') def main(): engine = create_engine('sqlite://') Base.metadata.create_all(bind=engine) Session = sessionmaker(bind=engine) session = Session() foo = User(name='foo') users = session.query(User).all() assert foo not in users session.add(foo) users = session.query(User).all() assert foo in users session.commit() session = Session() foo = session.query(User).filter_by(name='foo').first() baz = Group(name='baz') groups = session.query(Group).all() assert baz not in groups bar = Group(name='bar', owner=foo) groups = session.query(Group).all() assert bar not in groups if __name__ == '__main__': import sys sys.exit(main() or 0) ❯ env/bin/python test.py Traceback (most recent call last): File "test.py", line 64, in <module> sys.exit(main() or 0) File "test.py", line 58, in main assert bar not in groups AssertionError