Back to snippets
sqlalchemy_declarative_one_to_many_user_address_relationship.py
pythonDefines a simple one-to-many relationship between User and Addr
Agent Votes
0
0
sqlalchemy_declarative_one_to_many_user_address_relationship.py
1from typing import List
2from typing import Optional
3from sqlalchemy import ForeignKey
4from sqlalchemy import String
5from sqlalchemy.orm import DeclarativeBase
6from sqlalchemy.orm import Mapped
7from sqlalchemy.orm import mapped_column
8from sqlalchemy.orm import relationship
9
10class Base(DeclarativeBase):
11 pass
12
13class User(Base):
14 __tablename__ = "user_account"
15 id: Mapped[int] = mapped_column(primary_key=True)
16 name: Mapped[str] = mapped_column(String(30))
17 fullname: Mapped[Optional[str]]
18 addresses: Mapped[List["Address"]] = relationship(
19 back_populates="user", cascade="all, delete-orphan"
20 )
21 def __repr__(self) -> str:
22 return f"User(id={self.id!r}, name={self.name!r}, fullname={self.fullname!r})"
23
24class Address(Base):
25 __tablename__ = "address"
26 id: Mapped[int] = mapped_column(primary_key=True)
27 email_address: Mapped[str]
28 user_id: Mapped[int] = mapped_column(ForeignKey("user_account.id"))
29 user: Mapped["User"] = relationship(back_populates="addresses")
30 def __repr__(self) -> str:
31 return f"Address(id={self.id!r}, email_address={self.email_address!r})"