You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 KiB

🗄 (🔗) 💽

FastAPI 🚫 🚚 👆 ⚙️ 🗄 (🔗) 💽.

👆 💪 ⚙️ 🙆 🔗 💽 👈 👆 💚.

📥 👥 🔜 👀 🖼 ⚙️ 🇸🇲.

👆 💪 💪 🛠️ 🙆 💽 🐕‍🦺 🇸🇲, 💖:

  • 🗄
  • 🐸
  • 🤸‍♂ 🗄 💽, ️.

👉 🖼, 👥 🔜 ⚙️ 🗄, ↩️ ⚙️ 👁 📁 & 🐍 ✔️ 🛠️ 🐕‍🦺. , 👆 💪 📁 👉 🖼 & 🏃 ️.

, 👆 🏭 🈸, 👆 💪 💚 ⚙️ 💽 💽 💖 .

!!! tip 📤 🛂 🏗 🚂 ⏮️ FastAPI & , 🌐 🔛 , 🔌 🕸 & 🌖 🧰: https://github.com/tiangolo/full-stack-fastapi-postgresql

!!! note 👀 👈 📚 📟 🐩 SQLAlchemy 📟 👆 🔜 ⚙️ ⏮️ 🙆 🛠️.

 **FastAPI** 🎯 📟 🤪 🕧.

🐜

FastAPI 👷 ⏮️ 🙆 💽 & 🙆 👗 🗃 💬 💽.

⚙️ "🐜": "🎚-🔗 🗺" 🗃.

🐜 ✔️ 🧰 🗜 ("🗺") 🖖 🎚 📟 & 💽 🏓 ("🔗").

⏮️ 🐜, 👆 🛎 ✍ 🎓 👈 🎨 🏓 🗄 💽, 🔠 🔢 🎓 🎨 🏓, ⏮️ 📛 & 🆎.

🖼 🎓 Pet 💪 🎨 🗄 🏓 pets.

& 🔠 👐 🎚 👈 🎓 🎨💽.

🖼 🎚 orion_cat (👐 Pet) 💪 ✔️ 🔢 orion_cat.type, 🏓 type. & 💲 👈 🔢 💪, "cat".

👫 🐜 ✔️ 🧰🔗 ⚖️ 🔗 🖖 🏓 ⚖️ 👨‍💼.

👉 🌌, 👆 💪 ✔️ 🔢 orion_cat.owner & 👨‍💼 🔜 🔌 💽 👉 🐶 👨‍💼, ➡️ 🏓 👨‍💼.

, orion_cat.owner.name 💪 📛 (➡️ name 🏓 owners 🏓) 👉 🐶 👨‍💼.

💪 ✔️ 💲 💖 "Arquilian".

& 🐜 🔜 🌐 👷 🤚➡️ 🔗 🏓 👨‍💼 🕐 👆 🔄 🔐 ➡️ 👆 🐶 🎚.

🐜 🖼: ✳-🐜 (🍕🛠️), 🇸🇲 🐜 (🍕 🇸🇲, 🔬 🛠️) & 🏒 (🔬 🛠️), 👪 🎏.

📥 👥 🔜 👀 👷 ⏮️ 🇸🇲 🐜.

🎏 🌌 👆 💪 ⚙️ 🙆 🎏 🐜.

!!! tip 📤 🌓 📄 ⚙️ 🏒 📥 🩺.

📁 📊

👫 🖼, ➡️ 💬 👆 ✔️ 📁 📛 my_super_project 👈 🔌 🎧-📁 🤙 sql_app ⏮️ 📊 💖 👉:

.
└── sql_app
    ├── __init__.py
    ├── crud.py
    ├── database.py
    ├── main.py
    ├── models.py
    └── schemas.py

📁 __init__.py 🛁 📁, 💬 🐍 👈 sql_app ⏮️ 🌐 🚮 🕹 (🐍 📁) 📦.

🔜 ➡️ 👀 🔠 📁/🕹 🔨.

SQLAlchemy

🥇 👆 💪 SQLAlchemy:

$ pip install sqlalchemy

---> 100%

🇸🇲 🍕

➡️ 🔗 📁 sql_app/database.py.

🗄 🇸🇲 🍕

{!../../../docs_src/sql_databases/sql_app/database.py!}

💽 📛 🇸🇲

{!../../../docs_src/sql_databases/sql_app/database.py!}

👉 🖼, 👥 "🔗" 🗄 💽 (📂 📁 ⏮️ 🗄 💽).

📁 🔜 🔎 🎏 📁 📁 sql_app.db.

👈 🏁 🍕 ./sql_app.db.

🚥 👆 ⚙️ 💽 ↩️, 👆 🔜 ✔️ ✍ ⏸:

SQLALCHEMY_DATABASE_URL = "postgresql://user:password@postgresserver/db"

...& 🛠️ ⏮️ 👆 💽 📊 & 🎓 (📊 ✳, ✳ ⚖️ 🙆 🎏).

!!! tip

👉 👑 ⏸ 👈 👆 🔜 ✔️ 🔀 🚥 👆 💚 ⚙️ 🎏 💽.

🇸🇲 engine

🥇 🔁🇸🇲 "🚒".

👥 🔜 ⚙️ 👉 engine 🎏 🥉.

{!../../../docs_src/sql_databases/sql_app/database.py!}

🗒

:

connect_args={"check_same_thread": False}

...💪 🕴 SQLite. 🚫 💪 🎏 💽.

!!! info "📡 ℹ"

🔢 🗄 🔜 🕴 ✔ 1️⃣ 🧵 🔗 ⏮️ ⚫️, 🤔 👈 🔠 🧵 🔜 🍵 🔬 📨.

👉 ❎ 😫 🤝 🎏 🔗 🎏 👜 (🎏 📨).

✋️ FastAPI, ⚙️ 😐 🔢 (`def`) 🌅 🌘 1️⃣ 🧵 💪 🔗 ⏮️ 💽 🎏 📨, 👥 💪 ⚒ 🗄 💭 👈 ⚫️ 🔜 ✔ 👈 ⏮️ `connect_args={"check_same_thread": False}`.

, 👥 🔜 ⚒ 💭 🔠 📨 🤚 🚮 👍 💽 🔗 🎉 🔗, 📤 🙅‍♂ 💪 👈 🔢 🛠️.

SessionLocal 🎓

🔠 👐 SessionLocal 🎓 🔜 💽 🎉. 🎓 🚫 💽 🎉.

🕐 👥👐 SessionLocal 🎓, 👉 👐 🔜💽 🎉.

👥 📛 SessionLocal 🔬 ➡️ Session 👥 🏭 ➡️ 🇸🇲.

👥 🔜 ⚙️ Session (1️⃣ 🗄 ➡️ 🇸🇲) .

SessionLocal 🎓, ⚙️ 🔢 sessionmaker:

{!../../../docs_src/sql_databases/sql_app/database.py!}

Base 🎓

🔜 👥 🔜 ⚙️ 🔢 declarative_base() 👈 📨 🎓.

👥 🔜 😖 ➡️ 👉 🎓🔠 💽 🏷 ⚖️ 🎓 (🐜 🏷):

{!../../../docs_src/sql_databases/sql_app/database.py!}

💽 🏷

➡️ 🔜 👀 📁 sql_app/models.py.

🇸🇲 🏷 ➡️ Base 🎓

👥 🔜 ⚙️ 👉 Base 🎓 👥 ✍ ⏭ ✍ 🇸🇲 🏷.

!!! tip 🇸🇲 ⚙️ ⚖ "🏷" 🔗 👉 🎓 & 👐 👈 🔗 ⏮️ 💽.

✋️ Pydantic ⚙️ ⚖ "**🏷**" 🔗 🕳 🎏, 💽 🔬, 🛠️, & 🧾 🎓 & 👐.

🗄 Base ➡️ database (📁 database.py ➡️ 🔛).

🎓 👈 😖 ➡️ ️.

👫 🎓 🇸🇲 🏷.

{!../../../docs_src/sql_databases/sql_app/models.py!}

__tablename__ 🔢 💬 🇸🇲 📛 🏓 ⚙️ 💽 🔠 👫 🏷.

✍ 🏷 🔢/🏓

🔜🌐 🏷 (🎓) 🔢.

🔠 👫 🔢 🎨 🏓 🚮 🔗 💽 🏓.

👥 ⚙️ Column ➡️ 🇸🇲 🔢 💲.

& 👥 🚶‍♀️ 🇸🇲 🎓 "🆎", Integer, String, & Boolean, 👈 🔬 🆎 💽, .

{!../../../docs_src/sql_databases/sql_app/models.py!}

💛

🔜💛.

👉, 👥 ⚙️ relationship 🚚 🇸🇲 🐜.

👉 🔜 ▶️️, 🌅 ⚖️ 🌘, "🎱" 🔢 👈 🔜 🔌 💲 ➡️ 🎏 🏓 🔗 👉 1️⃣.

{!../../../docs_src/sql_databases/sql_app/models.py!}

🕐 🔐 🔢 items User, my_user.items, 🔜 ✔️ 📇 Item 🇸🇲 🏷 (➡️ items 🏓) 👈 ✔️ 💱 🔑👉users 🏓.

🕐 👆 🔐 my_user.items, 🇸🇲 🔜 🤙 🚶 & 🏬 ➡️ 💽 items 🏓 & 🔗 👫 📥.

& 🕐 🔐 🔢 owner Item, 🔜 🔌 User 🇸🇲 🏷 ➡️ users 🏓. 🔜 ⚙️ owner_id 🔢/🏓 ⏮️ 🚮 💱 🔑 💭 🤚 ➡️ users 🏓.

✍ Pydantic 🏷

🔜 ➡️ 📁 sql_app/schemas.py.

!!! tip 😨 🖖 🇸🇲 🏷 & Pydantic 🏷, 👥 🔜 ✔️ 📁 models.py ⏮️ 🇸🇲 🏷, & 📁 schemas.py ⏮️ Pydantic 🏷.

👫 Pydantic 🏷 🔬 🌅 ⚖️ 🌘 "🔗" (☑ 📊 💠).

👉 🔜 ℹ 👥 ❎ 😨 ⏪ ⚙️ 👯‍♂️.

▶️ Pydantic 🏷 / 🔗

ItemBase & UserBase Pydantic 🏷 (⚖️ ➡️ 💬 "🔗") ✔️🔢 🏗 ⚖️ 👂 📊.

& ✍ ItemCreate & UserCreate 👈 😖 ➡️ 👫 (👫 🔜 ✔️ 🎏 🔢), 🙆 🌖 📊 (🔢) 💪 🏗.

, 👩‍💻 🔜 ✔️ password 🕐 🏗 ️.

💂‍♂, password 🏆 🚫 🎏 Pydantic 🏷, 🖼, 🏆 🚫 📨 ➡️ 🛠️ 🕐 👂 👩‍💻.

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="3  6-8  11-12  23-24  27-28"
{!> ../../../docs_src/sql_databases/sql_app/schemas.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="3  6-8  11-12  23-24  27-28"
{!> ../../../docs_src/sql_databases/sql_app_py39/schemas.py!}
```

=== "🐍 3️⃣.1️⃣0️⃣ & 🔛"

```Python hl_lines="1  4-6  9-10  21-22  25-26"
{!> ../../../docs_src/sql_databases/sql_app_py310/schemas.py!}
```

🇸🇲 👗 & Pydantic 👗

👀 👈 🇸🇲 🏷 🔬 🔢 ⚙️ =, & 🚶‍♀️ 🆎 🔢 Column, 💖:

name = Column(String)

Pydantic 🏷 📣 🆎 ⚙️ :, 🆕 🆎/🆎 🔑:

name: str

✔️ 🤯, 👆 🚫 🤚 😕 🕐 ⚙️ = & : ⏮️ 👫.

✍ Pydantic 🏷 / 🔗 👂 / 📨

🔜 ✍ Pydantic 🏷 (🔗) 👈 🔜 ⚙️ 🕐 👂 💽, 🕐 🛬 ➡️ 🛠️.

🖼, ⏭ 🏗 🏬, 👥 🚫 💭 🔜 🆔 🛠️ ️, 🕐 👂 ️ (🕐 🛬 ➡️ 🛠️) 👥 🔜 💭 🚮 🆔.

🎏 🌌, 🕐 👂 👩‍💻, 👥 💪 🔜 📣 👈 items 🔜 🔌 🏬 👈 💭 👉 👩‍💻.

🚫 🕴 🆔 📚 🏬, 🌐 💽 👈 👥 🔬 Pydantic 🏷 👂 🏬: Item.

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="15-17  31-34"
{!> ../../../docs_src/sql_databases/sql_app/schemas.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="15-17  31-34"
{!> ../../../docs_src/sql_databases/sql_app_py39/schemas.py!}
```

=== "🐍 3️⃣.1️⃣0️⃣ & 🔛"

```Python hl_lines="13-15  29-32"
{!> ../../../docs_src/sql_databases/sql_app_py310/schemas.py!}
```

!!! tip 👀 👈 User, Pydantic 🏷 👈 🔜 ⚙️ 🕐 👂 👩‍💻 (🛬 ➡️ 🛠️) 🚫 🔌 password.

⚙️ Pydantic orm_mode

🔜, Pydantic 🏷 👂, Item & User, 🚮 🔗 Config 🎓.

👉 Config 🎓 ⚙️ 🚚 📳 Pydantic.

Config 🎓, ⚒ 🔢 orm_mode = True.

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="15  19-20  31  36-37"
{!> ../../../docs_src/sql_databases/sql_app/schemas.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="15  19-20  31  36-37"
{!> ../../../docs_src/sql_databases/sql_app_py39/schemas.py!}
```

=== "🐍 3️⃣.1️⃣0️⃣ & 🔛"

```Python hl_lines="13  17-18  29  34-35"
{!> ../../../docs_src/sql_databases/sql_app_py310/schemas.py!}
```

!!! tip 👀 ️ ⚖ 💲 ⏮️ =, 💖:

`orm_mode = True`

⚫️ 🚫 ⚙️ `:` 🆎 📄 ⏭.

👉 ⚒ 📁 💲, 🚫 📣 🆎.

Pydantic orm_mode 🔜 💬 Pydantic 🏷💽 🚥 🚫 dict, 🐜 🏷 (⚖️ 🙆 🎏 🎚 ⏮️ 🔢).

👉 🌌, ↩️ 🕴 🔄 🤚 id 💲 ➡️ dict,:

id = data["id"]

🔜 🔄 🤚 ➡️ 🔢,:

id = data.id

& ⏮️ 👉, Pydantic 🏷 🔗 ⏮️ 🐜, & 👆 💪 📣 response_model 👆 🛠️.

👆 🔜 💪 📨 💽 🏷 & 🔜💽 ➡️ ️.

📡🔃 🐜 📳

🇸🇲 & 📚 🎏 🔢 "🙃 🚚".

👈 ⛓, 🖼, 👈 👫 🚫 💽 💛 ➡️ 💽 🚥 👆 🔄 🔐 🔢 👈 🔜 🔌 👈 💽.

🖼, 🔐 🔢 items:

current_user.items

🔜🇸🇲 🚶 items 🏓 & 🤚 🏬 👉 👩‍💻, 🚫 ⏭.

🍵 orm_mode, 🚥 👆 📨 🇸🇲 🏷 ➡️ 👆 🛠️, 🚫🔜 🔌 💛 💽.

🚥 👆 📣 📚 💛 👆 Pydantic 🏷.

⏮️ 🐜 📳, Pydantic 🔜 🔄 🔐 💽 💪 ➡️ 🔢 (↩️ 🤔 dict), 👆 💪 📣 🎯 💽 👆 💚 📨 & 🔜 💪 🚶 & 🤚 ️, ➡️ 🐜.

💩 🇨🇻

🔜 ➡️ 👀 📁 sql_app/crud.py.

👉 📁 👥 🔜 ✔️🔢 🔗 ⏮️ 💽 💽.

💩 👟 ➡️: 🅱📧, 💳, 👤 = , & 🇨🇮📧.

...👐 👉 🖼 👥 🕴 🏗 & 👂.

💽

🗄 Session ➡️ sqlalchemy.orm, 👉 🔜👆 📣 🆎 db 🔢 & ✔️ 👻 🆎 & 🛠️ 👆 🔢.

🗄 models (🇸🇲 🏷) & schemas (Pydantic 🏷 / 🔗).

🚙 🔢:

  • ✍ 👁 👩‍💻 🆔 & 📧.
  • 💗 👩‍💻.
  • 💗 🏬.
{!../../../docs_src/sql_databases/sql_app/crud.py!}

!!! tip 🏗 🔢 👈 🕴 💡 🔗 ⏮️ 💽 (🤚 👩‍💻 ⚖️ 🏬) 🔬 👆 🛠️ 🔢, 👆 💪 🌖 💪👫 💗 🍕 & 🚮 💯 👫.

💽

🔜🚙 🔢💽.

🔁:

  • 🇸🇲 🏷 👐 ⏮️ 👆 📊.
  • add 👈 👐 🎚 👆 💽 🎉.
  • commit 🔀 💽 (👈 👫 🖊).
  • refresh 👆 👐 (👈 🔌 🙆 🆕 📊 ➡️ 💽, 💖 🏗 🆔).
{!../../../docs_src/sql_databases/sql_app/crud.py!}

!!! tip 🇸🇲 🏷 User 🔌 hashed_password 👈 🔜 🔌 🔐 #️⃣ 🔐.

✋️ ⚫️❔ 🛠️ 👩‍💻 🚚 ⏮️ 🔐, 👆 💪 ⚗ ⚫️ & 🏗 #️⃣ 🔐 👆 🈸.

 & ⤴️ 🚶‍♀️ `hashed_password` ❌ ⏮️ 💲 🖊.

!!! warning 👉 🖼 🚫 🔐, 🔐 🚫#️⃣.

🎰 👨‍❤‍👨 🈸 👆 🔜 💪 #️⃣ 🔐 & 🙅 🖊 👫 🔢.

🌅 ℹ, 🚶 🔙 💂‍♂ 📄 🔰.

📥 👥 🎯 🕴 🔛 🧰 & 👨‍🔧 💽.

!!! tip ↩️ 🚶‍♀️ 🔠 🇨🇻 Item & 👂 🔠 1️⃣ 👫 ➡️ Pydantic 🏷, 👥 🏭 dict ⏮️ Pydantic 🏷'Ⓜ 📊 ⏮️:

`item.dict()`

 & ⤴️ 👥 🚶‍♀️ `dict`'Ⓜ 🔑-💲 👫 🇨🇻 ❌ 🇸🇲 `Item`, ⏮️:

`Item(**item.dict())`

 & ⤴️ 👥 🚶‍♀️ ➕ 🇨🇻 ❌ `owner_id` 👈 🚫 🚚 Pydantic *🏷*, ⏮️:

`Item(**item.dict(), owner_id=user_id)`

👑 FastAPI 📱

& 🔜 📁 sql_app/main.py ➡️ 🛠️ & ⚙️ 🌐 🎏 🍕 👥 ✍ ⏭.

💽 🏓

📶 🙃 🌌💽 🏓:

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="9"
{!> ../../../docs_src/sql_databases/sql_app/main.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="7"
{!> ../../../docs_src/sql_databases/sql_app_py39/main.py!}
```

⚗ 🗒

🛎 👆 🔜 🎲 🔢 👆 💽 (✍ 🏓, ️) ⏮️ .

& 👆 🔜 ⚙️ ⚗ "🛠️" (👈 🚮 👑 👨‍🏭).

"🛠️" ⚒ 🔁 💪 🕐 👆 🔀 📊 👆 🇸🇲 🏷, 🚮 🆕 🔢, ️. 🔁 👈 🔀 💽, 🚮 🆕 🏓, 🆕 🏓, ️.

👆 💪 🔎 🖼 ⚗ FastAPI 🏗 📄 ➡️ 🏗 ⚡ - 📄{.internal-link target=_blank}. 🎯 alembic 📁 ℹ 📟.

🔗

🔜 ⚙️ SessionLocal 🎓 👥sql_app/database.py 📁🔗.

👥 💪 ✔️ 🔬 💽 🎉/🔗 (SessionLocal) 📍 📨, ⚙️ 🎏 🎉 🔘 🌐 📨 & ⤴️ 🔐 ⏮️ 📨 🏁.

& ⤴️ 🆕 🎉 🔜 ✍ ⏭ 📨.

👈, 👥 🔜🆕 🔗 ⏮️ yield, 🔬📄 🔃 🔗 ⏮️ yield{.internal-link target=_blank}.

👆 🔗 🔜🆕 🇸🇲 SessionLocal 👈 🔜 ⚙️ 👁 📨, & ⤴️ 🔐 🕐 📨 🏁.

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="15-20"
{!> ../../../docs_src/sql_databases/sql_app/main.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="13-18"
{!> ../../../docs_src/sql_databases/sql_app_py39/main.py!}
```

!!! info 👥 🚮 🏗 SessionLocal() & 🚚 📨 try 🍫.

 & ⤴️ 👥 🔐 ⚫️ `finally` 🍫.

👉 🌌 👥 ⚒ 💭 💽 🎉 🕧 📪 ⏮️ 📨. 🚥 📤 ⚠ ⏪ 🏭 📨.

✋️ 👆 💪 🚫 🤚 ➕1️⃣ ⚠ ⚪️➡️ 🚪 📟 (⏮️ `yield`). 👀 🌖 [🔗 ⏮️ `yield` & `HTTPException`](./dependencies/dependencies-with-yield.md#dependencies-with-yield-and-httpexception){.internal-link target=_blank}

& ⤴️, 🕐 ⚙️ 🔗 🛠️ 🔢, 👥 📣 ⏮️ 🆎 Session 👥 🗄 🔗 ➡️ 🇸🇲.

👉 🔜 ⤴️ 🤝 👥 👍 👨‍🎨 🐕‍🦺 🔘 🛠️ 🔢, ↩️ 👨‍🎨 🔜 💭 👈 db 🔢 🆎 Session:

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="24  32  38  47  53"
{!> ../../../docs_src/sql_databases/sql_app/main.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="22  30  36  45  51"
{!> ../../../docs_src/sql_databases/sql_app_py39/main.py!}
```

!!! info "📡 ℹ" 🔢 db 🤙 🆎 SessionLocal, 👉 🎓 (✍ ⏮️ sessionmaker()) "🗳" 🇸🇲 Session,, 👨‍🎨 🚫 🤙 💭 👩‍🔬 🚚.

✋️ 📣 🆎 `Session`, 👨‍🎨 🔜 💪 💭 💪 👩‍🔬 (`.add()`, `.query()`, `.commit()`, ♒️) & 💪 🚚 👍 🐕‍🦺 (💖 🛠️). 🆎 📄 🚫 📉 ☑ 🎚.

👆 FastAPI 🛠️

🔜, 😒, 📥 🐩 FastAPI 🛠️ 📟.

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="23-28  31-34  37-42  45-49  52-55"
{!> ../../../docs_src/sql_databases/sql_app/main.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="21-26  29-32  35-40  43-47  50-53"
{!> ../../../docs_src/sql_databases/sql_app_py39/main.py!}
```

👥 🏗 💽 🎉🔠 📨 🔗 ⏮️ yield, & ⤴️ 📪 ⏮️.

& ⤴️ 👥 💪🚚 🔗 🛠️ 🔢, 🤚 👈 🎉 🔗.

⏮️ 👈, 👥 💪 🤙 crud.get_user 🔗 ➡️ 🔘 🛠️ 🔢 & ⚙️ 👈 🎉.

!!! tip 👀 👈 💲 👆 📨 🇸🇲 🏷, ⚖️ 📇 🇸🇲 🏷.

✋️ 🌐 *➡ 🛠️* ✔️ `response_model` ⏮️ Pydantic *🏷* / 🔗 ⚙️ `orm_mode`, 💽 📣 👆 Pydantic 🏷 🔜 ⚗ ⚪️➡️ 👫 & 📨 👩‍💻, ⏮️ 🌐 😐 ⛽ & 🔬.

!!! tip 👀 👈 📤 response_models 👈 ✔️ 🐩 🐍 🆎 💖 List[schemas.Item].

✋️ 🎚/🔢 👈 `List` Pydantic *🏷* ⏮️ `orm_mode`, 💽 🔜 🗃 & 📨 👩‍💻 🛎, 🍵 ⚠.

🔃 def 🆚 async def

📥 👥 ⚙️ 🇸🇲 📟 🔘 🛠️ 🔢 & 🔗, &, 🔄, 🔜 🚶 & 🔗 ⏮️ 🔢 💽.

👈 💪🚚 "".

🇸🇲 🚫 ✔️ 🔗 ⚙️ await 🔗, 🔜 ⏮️ 🕳 💖:

user = await db.query(User).first()

...& ↩️ 👥 ⚙️:

user = db.query(User).first()

⤴️ 👥 🔜 📣 🛠️ 🔢 & 🔗 🍵 async def, ⏮️ 😐 def,:

@app.get("/users/{user_id}", response_model=schemas.User)
def read_user(user_id: int, db: Session = Depends(get_db)):
    db_user = crud.get_user(db, user_id=user_id)
    ...

!!! info 🚥 👆 💪 🔗 👆 🔗 💽 🔁, 👀 🔁 🗄 (🔗) 💽{.internal-link target=_blank}.

!!! note "📶 📡 ℹ" 🚥 👆 😟 & ✔️ 📡 💡, 👆 💪 📶 📡 👉 async def 🆚 def 🍵 🔁{.internal-link target=_blank} 🩺.

🛠️

↩️ 👥 ⚙️ 🇸🇲 🔗 & 👥 🚫 🚚 🙆 😇 🔌-👷 ⏮️ FastAPI, 👥 💪 🛠️ 💽 🛠️ ⏮️ 🔗.

& 📟 🔗 🇸🇲 & 🇸🇲 🏷 🖖 🎏 🔬 📁, 👆 🔜 💪 🎭 🛠️ ⏮️🍵 ✔️ FastAPI, Pydantic, ⚖️ 🕳 🙆.

🎏 🌌, 👆 🔜 💪 ⚙️ 🎏 🇸🇲 🏷 & 🚙 🎏 🍕 👆 📟 👈 🚫 🔗 FastAPI.

🖼, 🖥 📋 👨‍🏭 ⏮️ 🥒, 🅿, ⚖️ 📶.

📄 🌐 📁

💭 👆 🔜 ✔️ 📁 📛 my_super_project 👈 🔌 🎧-📁 🤙 sql_app.

sql_app 🔜 ✔️ 📄 📁:

  • sql_app/__init__.py: 🛁 📁.

  • sql_app/database.py:

{!../../../docs_src/sql_databases/sql_app/database.py!}
  • sql_app/models.py:
{!../../../docs_src/sql_databases/sql_app/models.py!}
  • sql_app/schemas.py:

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python
{!> ../../../docs_src/sql_databases/sql_app/schemas.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python
{!> ../../../docs_src/sql_databases/sql_app_py39/schemas.py!}
```

=== "🐍 3️⃣.1️⃣0️⃣ & 🔛"

```Python
{!> ../../../docs_src/sql_databases/sql_app_py310/schemas.py!}
```
  • sql_app/crud.py:
{!../../../docs_src/sql_databases/sql_app/crud.py!}
  • sql_app/main.py:

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python
{!> ../../../docs_src/sql_databases/sql_app/main.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python
{!> ../../../docs_src/sql_databases/sql_app_py39/main.py!}
```

👆 💪 📁 👉 📟 & ⚙️ ️.

!!! info

👐, 📟 🎦 📥 🍕 💯. 🌅 📟 👉 🩺.

⤴️ 👆 💪 🏃 ⏮️ Uvicorn:

$ uvicorn sql_app.main:app --reload

<span style="color: green;">INFO</span>:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

& ⤴️, 👆 💪 📂 👆 🖥 http://127.0.0.1:8000/docs.

& 👆 🔜 💪 🔗 ⏮️ 👆 FastAPI 🈸, 👂 📊 ➡️ 🎰 💽:

🔗 ⏮️ 💽 🔗

🚥 👆 💚 🔬 🗄 💽 (📁) 🔗, ➡ FastAPI, ℹ 🚮 🎚, 🚮 🏓, 🏓, ⏺, 🔀 📊, ️. 👆 💪 ⚙️ 💽 🖥 🗄.

🔜 👀 💖 👉:

👆 💪 ⚙️ 💳 🗄 🖥 💖 🗄 📋 ⚖️ ExtendsClass.

🎛 💽 🎉 ⏮️ 🛠️

🚥 👆 💪 🚫 ⚙️ 🔗 ⏮️ yield - 🖼, 🚥 👆 🚫 ⚙️ 🐍 3️⃣.7️⃣ & 💪 🚫 "🐛" 🤔 🔛 🐍 3️⃣.6️⃣ - 👆 💪🆙 🎉 "🛠️" 🎏 🌌.

"🛠️" 🌖 🔢 👈 🕧 🛠️ 🔠 📨, ⏮️ 📟 🛠️ ⏭, & 📟 🛠️ ⏮️ 🔗 🔢.

🛠️

🛠️ 👥 🔜 🚮 (🔢) 🔜🆕 🇸🇲 SessionLocal 🔠 📨, 🚮 📨 & ⤴️ 🔐 🕐 📨 🏁.

=== "🐍 3️⃣.6️⃣ & 🔛"

```Python hl_lines="14-22"
{!> ../../../docs_src/sql_databases/sql_app/alt_main.py!}
```

=== "🐍 3️⃣.9️⃣ & 🔛"

```Python hl_lines="12-20"
{!> ../../../docs_src/sql_databases/sql_app_py39/alt_main.py!}
```

!!! info 👥 🚮 🏗 SessionLocal() & 🚚 📨 try 🍫.

 &amp; ⤴️ 👥 🔐 ⚫️ `finally` 🍫.

👉 🌌 👥 ⚒ 💭 💽 🎉 🕧 📪 ⏮️ 📨. 🚥 📤 ⚠ ⏪ 🏭 📨.

🔃 request.state

request.state 🏠 🔠 Request 🎚. 📤 🏪 🎚 📎 📨 ️, 💖 💽 🎉 👉 💼. 👆 💪🌅 🔃 💃 🩺 🔃 Request 🇵🇸.

👥 👉 💼, ️ ℹ 👥 🚚 👁 💽 🎉 ⚙️ 🔘 🌐 📨, & ⤴️ 🔐 ⏮️ (🛠️).

🔗 ⏮️ yield ⚖️ 🛠️

🛠️ 📥 🎏 🔗 ⏮️ yield 🔨, ⏮️ 🔺:

  • 🚚 🌖 📟 & 👄 🌅 🏗.
  • 🛠️ ✔️ async 🔢.
    • 🚥 📤 📟 👈 ✔️ "" 🕸, 💪 "🍫" 👆 🈸 📤 & 📉 🎭 🍖.
    • 👐 🎲 🚫 📶📥 ⏮️ 🌌 SQLAlchemy 👷.
    • 🚥 👆 🚮 🌖 📟 🛠️ 👈 ✔️ 📚 👤/🅾 , 💪 ⤴️ ⚠.
  • 🛠️ 🏃 🔠 📨.
    • , 🔗 🔜🔠 📨.
    • 🕐 🛠️ 👈 🍵 👈 📨 🚫 💪 💽.

!!! tip 🎲 👍 ⚙️ 🔗 ⏮️ yield 🕐 👫 🥃 ⚙️ 💼.

!!! info 🔗 ⏮️ yield 🚮 FastAPI.

⏮️ ⏬ 👉 🔰 🕴 ✔️ 🖼 ⏮️ 🛠️ &amp; 📤 🎲 📚 🈸 ⚙️ 🛠️ 💽 🎉 🧾.