from sqlalchemy import Column, Integer, String from sqlalchemy import create_engine from sqlalchemy import ForeignKey from sqlalchemy.orm import Session from sqlalchemy.orm import registry from sqlalchemy.orm import relationship mapper_registry = registry() Base = mapper_registry.generate_base() # from sqlalchemy.orm import declarative_base # Base = declarative_base() class User(Base): __tablename__ = 'user_account' id = Column(Integer, primary_key=True) name = Column(String(30)) fullname = Column(String) addresses = relationship("Address", back_populates="user") def __repr__(self): return f"User(id={self.id!r}, name={self.name!r}, fullname={self.fullname!r})" class Address(Base): __tablename__ = 'address' id = Column(Integer, primary_key=True) email_address = Column(String, nullable=False) user_id = Column(Integer, ForeignKey('user_account.id')) user = relationship("User", back_populates="addresses") def __repr__(self): return f"Address(id={self.id!r}, email_address={self.email_address!r})" engine = create_engine("sqlite+pysqlite:///:memory:", future=True) Base.metadata.create_all(engine) # SELECT from sqlalchemy import select stmt = select(User).where(User.name == 'spongebob') with Session(engine) as conn: for row in conn.execute(stmt): print(row)