Published

โ˜ (๐Ÿ“Ž / ๐Ÿฆ ๐Ÿ’ฝ) ๐Ÿ’ฝ

FastAPI framework, high performance, easy to learn, fast to code, ready for production We just scratched the surface, but you already get the idea of how it all works...

โ˜ (๐Ÿ“Ž / ๐Ÿฆ ๐Ÿ’ฝ) ๐Ÿ’ฝ

FastAPI ๐Ÿ’ช ๐Ÿ› ๏ธ โฎ๏ธ ๐Ÿ™† โ˜.

๐Ÿ“ฅ ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿ‘€ ๐Ÿ–ผ โš™๏ธ ๐Ÿ—„, ๐Ÿ“„ ๐Ÿงข โ˜ ๐Ÿ’ฝ.

๐Ÿ‘† ๐Ÿ’ช ๐Ÿ› ๏ธ โšซ๏ธ ๐Ÿ™† ๐ŸŽ โ˜ ๐Ÿ’ฝ ๐Ÿ’–:

  • โœณ
  • ๐Ÿ‘ธ
  • โœณ
  • ๐Ÿ‡ธ๐Ÿ‡ฒ
  • โœณ, โ™’๏ธ.

!!! tip ๐Ÿ“ค ๐Ÿ›‚ ๐Ÿ— ๐Ÿš‚ โฎ๏ธ FastAPI & ๐Ÿ—„, ๐ŸŒ โš“๏ธ ๐Ÿ”› โ˜, ๐Ÿ”Œ ๐Ÿ•ธ & ๐ŸŒ– ๐Ÿงฐ: https://github.com/tiangolo/full-stack-fastapi-couchbase

๐Ÿ—„ ๐Ÿ—„ ๐Ÿฆฒ

๐Ÿ”œ, ๐Ÿšซ ๐Ÿ’ธ ๐Ÿ™‹ ๐ŸŽ‚, ๐Ÿ•ด ๐Ÿ—„:

{!../../../docs_src/nosql_databases/tutorial001.py!}

๐Ÿ”ฌ ๐Ÿ“‰ โš™๏ธ "๐Ÿ“„ ๐Ÿ†Ž"

๐Ÿ‘ฅ ๐Ÿ”œ โš™๏ธ โšซ๏ธ โช ๐Ÿ”ง ๐Ÿ‘ type ๐Ÿ‘† ๐Ÿ“„.

๐Ÿ‘‰ ๐Ÿšซ โœ” ๐Ÿ—„, โœ‹๏ธ ๐Ÿ‘ ๐Ÿ’ก ๐Ÿ‘ˆ ๐Ÿ”œ โ„น ๐Ÿ‘† โฎ๏ธ.

{!../../../docs_src/nosql_databases/tutorial001.py!}

๐Ÿšฎ ๐Ÿ”ข ๐Ÿคš Bucket

๐Ÿ—„, ๐Ÿฅก โš’ ๐Ÿ“„, ๐Ÿ‘ˆ ๐Ÿ’ช ๐ŸŽ ๐Ÿ†Ž.

๐Ÿ‘ซ ๐Ÿ›Ž ๐ŸŒ ๐Ÿ”— ๐ŸŽ ๐Ÿˆธ.

๐Ÿ”‘ ๐Ÿ”— ๐Ÿ’ฝ ๐ŸŒ ๐Ÿ”œ "๐Ÿ’ฝ" (๐ŸŽฏ ๐Ÿ’ฝ, ๐Ÿšซ ๐Ÿ’ฝ ๐Ÿ’ฝ).

๐Ÿ”‘ โœณ ๐Ÿ”œ "๐Ÿ—ƒ".

๐Ÿ“Ÿ, Bucket ๐ŸŽจ ๐Ÿ‘‘ ๐Ÿ‡จ๐Ÿ‡ป ๐Ÿ“ป โฎ๏ธ ๐Ÿ’ฝ.

๐Ÿ‘‰ ๐Ÿš™ ๐Ÿ”ข ๐Ÿ”œ:

  • ๐Ÿ”— ๐Ÿ—„ ๐ŸŒ‘ (๐Ÿ‘ˆ ๐Ÿ’ช ๐Ÿ‘ ๐ŸŽฐ).
    • โš’ ๐Ÿ”ข โฒ.
  • ๐Ÿ”“ ๐ŸŒ‘.
  • ๐Ÿคš Bucket ๐Ÿ‘.
    • โš’ ๐Ÿ”ข โฒ.
  • ๐Ÿ“จ โšซ๏ธ.
{!../../../docs_src/nosql_databases/tutorial001.py!}

โœ Pydantic ๐Ÿท

๐Ÿ—„ "๐Ÿ“„" ๐Ÿค™ "๐ŸŽป ๐ŸŽš", ๐Ÿ‘ฅ ๐Ÿ’ช ๐Ÿท ๐Ÿ‘ซ โฎ๏ธ Pydantic.

User ๐Ÿท

๐Ÿฅ‡, โžก๏ธ โœ User ๐Ÿท:

{!../../../docs_src/nosql_databases/tutorial001.py!}

๐Ÿ‘ฅ ๐Ÿ”œ โš™๏ธ ๐Ÿ‘‰ ๐Ÿท ๐Ÿ‘† โžก ๐Ÿ› ๏ธ ๐Ÿ”ข,, ๐Ÿ‘ฅ ๐Ÿšซ ๐Ÿ”Œ โšซ๏ธ hashed_password.

UserInDB ๐Ÿท

๐Ÿ”œ, โžก๏ธ โœ UserInDB ๐Ÿท.

๐Ÿ‘‰ ๐Ÿ”œ โœ”๏ธ ๐Ÿ’ฝ ๐Ÿ‘ˆ ๐Ÿค™ ๐Ÿช ๐Ÿ’ฝ.

๐Ÿ‘ฅ ๐Ÿšซ โœ โšซ๏ธ ๐Ÿฟ Pydantic BaseModel โœ‹๏ธ ๐Ÿฟ ๐Ÿ‘† ๐Ÿ‘ User, โ†ฉ๏ธ โšซ๏ธ ๐Ÿ”œ โœ”๏ธ ๐ŸŒ ๐Ÿ”ข User โž• ๐Ÿ‘ฉโ€โคโ€๐Ÿ‘จ ๐ŸŒ…:

{!../../../docs_src/nosql_databases/tutorial001.py!}

!!! note ๐Ÿ‘€ ๐Ÿ‘ˆ ๐Ÿ‘ฅ โœ”๏ธ hashed_password & type ๐Ÿ‘ ๐Ÿ‘ˆ ๐Ÿ”œ ๐Ÿช ๐Ÿ’ฝ.

โœ‹๏ธ โšซ๏ธ ๐Ÿšซ ๐Ÿ• ๐Ÿข User ๐Ÿท (1๏ธโƒฃ ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿ“จ โžก ๐Ÿ› ๏ธ).

๐Ÿคš ๐Ÿ‘ฉโ€๐Ÿ’ป

๐Ÿ”œ โœ ๐Ÿ”ข ๐Ÿ‘ˆ ๐Ÿ”œ:

  • โœŠ ๐Ÿ†”.
  • ๐Ÿ— ๐Ÿ“„ ๐Ÿ†” โšช๏ธโžก๏ธ โšซ๏ธ.
  • ๐Ÿคš ๐Ÿ“„ โฎ๏ธ ๐Ÿ‘ˆ ๐Ÿ†”.
  • ๐Ÿšฎ ๐ŸŽš ๐Ÿ“„ UserInDB ๐Ÿท.

๐Ÿ— ๐Ÿ”ข ๐Ÿ‘ˆ ๐Ÿ•ด ๐Ÿ’ก ๐Ÿคš ๐Ÿ‘† ๐Ÿ‘ฉโ€๐Ÿ’ป โšช๏ธโžก๏ธ username (โš–๏ธ ๐Ÿ™† ๐ŸŽ ๐Ÿ”ข) ๐Ÿ”ฌ ๐Ÿ‘† โžก ๐Ÿ› ๏ธ ๐Ÿ”ข, ๐Ÿ‘† ๐Ÿ’ช ๐ŸŒ– ๐Ÿ’ช ๐Ÿค-โš™๏ธ โšซ๏ธ ๐Ÿ’— ๐Ÿ• & ๐Ÿšฎ โš’ ๐Ÿ’ฏ โšซ๏ธ:

{!../../../docs_src/nosql_databases/tutorial001.py!}

โ“‚-๐ŸŽป

๐Ÿšฅ ๐Ÿ‘† ๐Ÿšซ ๐Ÿ˜ฐ โฎ๏ธ f"userprofile::{username}", โšซ๏ธ ๐Ÿ "โ“‚-๐ŸŽป".

๐Ÿ™† ๐Ÿ”ข ๐Ÿ‘ˆ ๐Ÿšฎ ๐Ÿ”˜ {} โ“‚-๐ŸŽป ๐Ÿ”œ โ†” / ๐Ÿ’‰ ๐ŸŽป.

dict ๐Ÿ—

๐Ÿšฅ ๐Ÿ‘† ๐Ÿšซ ๐Ÿ˜ฐ โฎ๏ธ UserInDB(**result.value), โšซ๏ธ โš™๏ธ dict "๐Ÿ—".

โšซ๏ธ ๐Ÿ”œ โœŠ dict result.value, & โœŠ ๐Ÿ”  ๐Ÿšฎ ๐Ÿ”‘ & ๐Ÿ’ฒ & ๐Ÿšถโ€โ™€๏ธ ๐Ÿ‘ซ ๐Ÿ”‘-๐Ÿ’ฒ UserInDB ๐Ÿ‡จ๐Ÿ‡ป โŒ.

, ๐Ÿšฅ dict ๐Ÿ”Œ:

{
    "username": "johndoe",
    "hashed_password": "some_hash",
}

โšซ๏ธ ๐Ÿ”œ ๐Ÿšถโ€โ™€๏ธ UserInDB :

UserInDB(username="johndoe", hashed_password="some_hash")

โœ ๐Ÿ‘† FastAPI ๐Ÿ“Ÿ

โœ FastAPI ๐Ÿ“ฑ

{!../../../docs_src/nosql_databases/tutorial001.py!}

โœ โžก ๐Ÿ› ๏ธ ๐Ÿ”ข

๐Ÿ‘† ๐Ÿ“Ÿ ๐Ÿค™ ๐Ÿ—„ & ๐Ÿ‘ฅ ๐Ÿšซ โš™๏ธ ๐Ÿฅผ ๐Ÿ await ๐Ÿ•โ€๐Ÿฆบ, ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿ“ฃ ๐Ÿ‘† ๐Ÿ”ข โฎ๏ธ ๐Ÿ˜ def โ†ฉ๏ธ async def.

, ๐Ÿ—„ ๐Ÿ‘ ๐Ÿšซ โš™๏ธ ๐Ÿ‘ Bucket ๐ŸŽš ๐Ÿ’— "๐Ÿงตโ“‚",, ๐Ÿ‘ฅ ๐Ÿ’ช ๐Ÿคš ๐Ÿฅก ๐Ÿ”— & ๐Ÿšถโ€โ™€๏ธ โšซ๏ธ ๐Ÿ‘† ๐Ÿš™ ๐Ÿ”ข:

{!../../../docs_src/nosql_databases/tutorial001.py!}

๐ŸŒƒ

๐Ÿ‘† ๐Ÿ’ช ๐Ÿ› ๏ธ ๐Ÿ™† ๐Ÿฅ‰ ๐Ÿฅณ โ˜ ๐Ÿ’ฝ, โš™๏ธ ๐Ÿ‘ซ ๐Ÿฉ ๐Ÿ“ฆ.

๐ŸŽ โœ” ๐Ÿ™† ๐ŸŽ ๐Ÿ”ข ๐Ÿงฐ, โš™๏ธ โš–๏ธ ๐Ÿ› ๏ธ.