Release: 2.0.39 aktuelles Release | Release-Datum: 11. März 2025
SQLAlchemy 2.0 Dokumentation
- Oben: Startseite
- Auf dieser Seite
Einrichtung für ORM Queryguide: Vererbte Tabellen¶
Diese Seite veranschaulicht die Abbildungen und Fixture-Daten, die von den Beispielen für Joined Table Inheritance im Dokument Schreiben von SELECT-Anweisungen für Vererbungsabbildungen des ORM Querying Guide verwendet werden.
>>> from typing import List
>>> from sqlalchemy import create_engine
>>> from sqlalchemy import ForeignKey
>>> from sqlalchemy.orm import DeclarativeBase
>>> from sqlalchemy.orm import Mapped
>>> from sqlalchemy.orm import mapped_column
>>> from sqlalchemy.orm import relationship
>>> from sqlalchemy.orm import Session
>>>
>>>
>>> class Base(DeclarativeBase):
... pass
>>> class Company(Base):
... __tablename__ = "company"
... id: Mapped[int] = mapped_column(primary_key=True)
... name: Mapped[str]
... employees: Mapped[List["Employee"]] = relationship(back_populates="company")
>>>
>>> class Employee(Base):
... __tablename__ = "employee"
... id: Mapped[int] = mapped_column(primary_key=True)
... name: Mapped[str]
... type: Mapped[str]
... company_id: Mapped[int] = mapped_column(ForeignKey("company.id"))
... company: Mapped[Company] = relationship(back_populates="employees")
...
... def __repr__(self):
... return f"{self.__class__.__name__}({self.name!r})"
...
... __mapper_args__ = {
... "polymorphic_identity": "employee",
... "polymorphic_on": "type",
... }
>>>
>>> class Manager(Employee):
... __tablename__ = "manager"
... id: Mapped[int] = mapped_column(ForeignKey("employee.id"), primary_key=True)
... manager_name: Mapped[str]
... paperwork: Mapped[List["Paperwork"]] = relationship()
... __mapper_args__ = {
... "polymorphic_identity": "manager",
... }
>>> class Paperwork(Base):
... __tablename__ = "paperwork"
... id: Mapped[int] = mapped_column(primary_key=True)
... manager_id: Mapped[int] = mapped_column(ForeignKey("manager.id"))
... document_name: Mapped[str]
...
... def __repr__(self):
... return f"Paperwork({self.document_name!r})"
>>>
>>> class Engineer(Employee):
... __tablename__ = "engineer"
... id: Mapped[int] = mapped_column(ForeignKey("employee.id"), primary_key=True)
... engineer_info: Mapped[str]
... __mapper_args__ = {
... "polymorphic_identity": "engineer",
... }
>>>
>>> engine = create_engine("sqlite://", echo=True)
>>>
>>> Base.metadata.create_all(engine)
BEGIN ...
>>> conn = engine.connect()
>>> from sqlalchemy.orm import Session
>>> session = Session(conn)
>>> session.add(
... Company(
... name="Krusty Krab",
... employees=[
... Manager(
... name="Mr. Krabs",
... manager_name="Eugene H. Krabs",
... paperwork=[
... Paperwork(document_name="Secret Recipes"),
... Paperwork(document_name="Krabby Patty Orders"),
... ],
... ),
... Engineer(name="SpongeBob", engineer_info="Krabby Patty Master"),
... Engineer(
... name="Squidward",
... engineer_info="Senior Customer Engagement Engineer",
... ),
... ],
... )
... )
>>> session.commit()
BEGIN ...© Copyright 2007-2025, die SQLAlchemy-Autoren und Mitwirkenden.
Die Designs von flambé! dem Drachen und Der Alchemist wurden von Rotem Yaari erstellt und großzügig gespendet.
Erstellt mit Sphinx 7.2.6. Dokumentation zuletzt generiert: Di 11 Mär 2025 14:40:17 EDT