File: _deferred_setup.rst

package info (click to toggle)
sqlalchemy 2.0.40%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 26,404 kB
  • sloc: python: 410,002; makefile: 230; sh: 7
file content (105 lines) | stat: -rw-r--r-- 4,019 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
:orphan:

========================================
Setup for ORM Queryguide: Column Loading
========================================

This page illustrates the mappings and fixture data used by the
:doc:`columns` document of the :ref:`queryguide_toplevel`.

..  sourcecode:: python

    >>> from typing import List
    >>> from typing import Optional
    >>>
    >>> from sqlalchemy import Column
    >>> from sqlalchemy import create_engine
    >>> from sqlalchemy import ForeignKey
    >>> from sqlalchemy import LargeBinary
    >>> from sqlalchemy import Table
    >>> from sqlalchemy import Text
    >>> 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 User(Base):
    ...     __tablename__ = "user_account"
    ...     id: Mapped[int] = mapped_column(primary_key=True)
    ...     name: Mapped[str]
    ...     fullname: Mapped[Optional[str]]
    ...     books: Mapped[List["Book"]] = relationship(back_populates="owner")
    ...
    ...     def __repr__(self) -> str:
    ...         return f"User(id={self.id!r}, name={self.name!r}, fullname={self.fullname!r})"
    >>> class Book(Base):
    ...     __tablename__ = "book"
    ...     id: Mapped[int] = mapped_column(primary_key=True)
    ...     owner_id: Mapped[int] = mapped_column(ForeignKey("user_account.id"))
    ...     title: Mapped[str]
    ...     summary: Mapped[str] = mapped_column(Text)
    ...     cover_photo: Mapped[bytes] = mapped_column(LargeBinary)
    ...     owner: Mapped["User"] = relationship(back_populates="books")
    ...
    ...     def __repr__(self) -> str:
    ...         return f"Book(id={self.id!r}, title={self.title!r})"
    >>> engine = create_engine("sqlite+pysqlite:///:memory:", echo=True)
    >>> Base.metadata.create_all(engine)
    BEGIN ...
    >>> conn = engine.connect()
    >>> session = Session(conn)
    >>> session.add_all(
    ...     [
    ...         User(
    ...             name="spongebob",
    ...             fullname="Spongebob Squarepants",
    ...             books=[
    ...                 Book(
    ...                     title="100 Years of Krabby Patties",
    ...                     summary="some long summary",
    ...                     cover_photo=b"binary_image_data",
    ...                 ),
    ...                 Book(
    ...                     title="Sea Catch 22",
    ...                     summary="another long summary",
    ...                     cover_photo=b"binary_image_data",
    ...                 ),
    ...                 Book(
    ...                     title="The Sea Grapes of Wrath",
    ...                     summary="yet another summary",
    ...                     cover_photo=b"binary_image_data",
    ...                 ),
    ...             ],
    ...         ),
    ...         User(
    ...             name="sandy",
    ...             fullname="Sandy Cheeks",
    ...             books=[
    ...                 Book(
    ...                     title="A Nut Like No Other",
    ...                     summary="some long summary",
    ...                     cover_photo=b"binary_image_data",
    ...                 ),
    ...                 Book(
    ...                     title="Geodesic Domes: A Retrospective",
    ...                     summary="another long summary",
    ...                     cover_photo=b"binary_image_data",
    ...                 ),
    ...                 Book(
    ...                     title="Rocketry for Squirrels",
    ...                     summary="yet another summary",
    ...                     cover_photo=b"binary_image_data",
    ...                 ),
    ...             ],
    ...         ),
    ...     ]
    ... )
    >>> session.commit()
    BEGIN ... COMMIT
    >>> session.close()
    >>> conn.begin()
    BEGIN ...