From: chaoless <64477804+chaoless@users.noreply.github.com>
Date: Tue, 7 May 2024 21:00:22 +0000 (+0800)
Subject: 🌐 Update Chinese translation for `docs/zh/docs/tutorial/sql-databases.md` (#11539)
X-Git-Tag: 0.111.1~150
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c4f6439888edb639306538921afd290ea496bb1e;p=thirdparty%2Ffastapi%2Ffastapi.git
🌐 Update Chinese translation for `docs/zh/docs/tutorial/sql-databases.md` (#11539)
---
diff --git a/docs/zh/docs/tutorial/sql-databases.md b/docs/zh/docs/tutorial/sql-databases.md
index be0c765935..bd7c10571c 100644
--- a/docs/zh/docs/tutorial/sql-databases.md
+++ b/docs/zh/docs/tutorial/sql-databases.md
@@ -1,12 +1,19 @@
# SQL (å
³ç³»å) æ°æ®åº
+!!! info
+ è¿äºææ¡£å³å°è¢«æ´æ°ãð
+
+ å½åçæ¬å设Pydantic v1åSQLAlchemyçæ¬å°äº2ã
+
+ æ°çææ¡£å°å
æ¬Pydantic v2以å SQLModelï¼ä¹æ¯åºäºSQLAlchemyï¼ï¼ä¸æ¦SQLModelæ´æ°ä¸ºä¸ºä½¿ç¨Pydantic v2ã
+
**FastAPI**ä¸éè¦ä½ 使ç¨SQL(å
³ç³»å)æ°æ®åºã
使¯æ¨å¯ä»¥ä½¿ç¨ä»»ä½æ¨æ³è¦çå
³ç³»åæ°æ®åºã
å¨è¿éï¼è®©æä»¬çä¸ä¸ªä½¿ç¨ç[SQLAlchemy](https://www.sqlalchemy.org/)ç示ä¾ã
-æ¨å¯ä»¥å¾å®¹æå°å°SQLAlchemyæ¯æä»»ä½æ°æ®åºï¼åï¼
+æ¨å¯ä»¥å¾å®¹æå°å°å
¶è°æ´ä¸ºä»»ä½SQLAlchemyæ¯æçæ°æ®åºï¼å¦ï¼
* PostgreSQL
* MySQL
@@ -74,13 +81,13 @@ ORM å
·æå¨ä»£ç åæ°æ®åºè¡¨ï¼â*å
³ç³»åâï¼ä¸ç**对象**ä¹é´
âââ schemas.py
```
-该æä»¶`__init__.py`åªæ¯ä¸ä¸ªç©ºæä»¶ï¼ä½å®åè¯ Python å
¶ä¸`sql_app`çæææ¨¡åï¼Python æä»¶ï¼é½æ¯ä¸ä¸ªå
ã
+该æä»¶`__init__.py`åªæ¯ä¸ä¸ªç©ºæä»¶ï¼ä½å®åè¯ Python `sql_app` æ¯ä¸ä¸ªå
ã
ç°å¨è®©æä»¬ççæ¯ä¸ªæä»¶/模åçä½ç¨ã
## å®è£
SQLAlchemy
-å
ä¸è½½`SQLAlchemy`æéè¦çä¾èµï¼
+é¦å
ä½ éè¦å®è£
`SQLAlchemy`:
@@ -152,17 +159,17 @@ connect_args={"check_same_thread": False}
è¿æ¯ä¸ºäºé²æ¢æå¤å°ä¸ºä¸åçäºç©ï¼ä¸åç请æ±ï¼å
±äº«ç¸åçè¿æ¥ã
- 使¯å¨ FastAPI ä¸ï¼æ®é使ç¨def彿°ï¼å¤ä¸ªçº¿ç¨å¯ä»¥ä¸ºåä¸ä¸ªè¯·æ±ä¸æ°æ®åºäº¤äºï¼æä»¥æä»¬éè¦ä½¿ç¨`connect_args={"check_same_thread": False}`æ¥è®©SQLiteå
è®¸è¿æ ·ã
+ 使¯å¨ FastAPI ä¸ï¼ä½¿ç¨æ®é彿°ï¼defï¼æ¶ï¼å¤ä¸ªçº¿ç¨å¯ä»¥ä¸ºåä¸ä¸ªè¯·æ±ä¸æ°æ®åºäº¤äºï¼æä»¥æä»¬éè¦ä½¿ç¨`connect_args={"check_same_thread": False}`æ¥è®©SQLiteå
è®¸è¿æ ·ã
æ¤å¤ï¼æä»¬å°ç¡®ä¿æ¯ä¸ªè¯·æ±é½å¨ä¾èµé¡¹ä¸è·å¾èªå·±çæ°æ®åºè¿æ¥ä¼è¯ï¼å æ¤ä¸éè¦è¯¥é»è®¤æºå¶ã
### å建ä¸ä¸ª`SessionLocal`ç±»
-æ¯ä¸ªå®ä¾`SessionLocal`é½ä¼æ¯ä¸ä¸ªæ°æ®åºä¼è¯ãå½ç¶è¯¥ç±»æ¬èº«è¿ä¸æ¯æ°æ®åºä¼è¯ã
+æ¯ä¸ª`SessionLocal`ç±»çå®ä¾é½ä¼æ¯ä¸ä¸ªæ°æ®åºä¼è¯ãå½ç¶è¯¥ç±»æ¬èº«è¿ä¸æ¯æ°æ®åºä¼è¯ã
使¯ä¸æ¦æä»¬å建äºä¸ä¸ª`SessionLocal`ç±»çå®ä¾ï¼è¿ä¸ªå®ä¾å°æ¯å®é
çæ°æ®åºä¼è¯ã
-æä»¬å½å宿¯`SessionLocal`为äºå°å®ä¸æä»¬ä» SQLAlchemy 导å
¥ç`Session`åºå«å¼æ¥ã
+æä»¬å°å®å½å为`SessionLocal`æ¯ä¸ºäºå°å®ä¸æä»¬ä» SQLAlchemy 导å
¥ç`Session`åºå«å¼æ¥ã
ç¨åæä»¬å°ä½¿ç¨`Session`ï¼ä» SQLAlchemy 导å
¥çé£ä¸ªï¼ã
@@ -176,7 +183,7 @@ connect_args={"check_same_thread": False}
ç°å¨æä»¬å°ä½¿ç¨`declarative_base()`è¿åä¸ä¸ªç±»ã
-ç¨åæä»¬å°ç¨è¿ä¸ªç±»ç»§æ¿ï¼æ¥å建æ¯ä¸ªæ°æ®åºæ¨¡åæç±»ï¼ORM 模åï¼ï¼
+ç¨åæä»¬å°ç»§æ¿è¿ä¸ªç±»ï¼æ¥å建æ¯ä¸ªæ°æ®åºæ¨¡åæç±»ï¼ORM 模åï¼ï¼
```Python hl_lines="13"
{!../../../docs_src/sql_databases/sql_app/database.py!}
@@ -209,7 +216,7 @@ connect_args={"check_same_thread": False}
### å建模å屿§/å
-ç°å¨åå»ºæææ¨¡åï¼ç±»ï¼å±æ§ã
+ç°å¨åå»ºæææ¨¡åï¼ç±»ï¼ç屿§ã
è¿äºå±æ§ä¸çæ¯ä¸ä¸ªé½ä»£è¡¨å
¶ç¸åºæ°æ®åºè¡¨ä¸çä¸åã
@@ -252,13 +259,13 @@ connect_args={"check_same_thread": False}
### å建åå§ Pydantic*模å*/模å¼
-å建ä¸ä¸ª`ItemBase`å`UserBase`Pydantic*模å*ï¼æè
æä»¬è¯´âschemaâï¼ä»¥åå¨å建æè¯»åæ°æ®æ¶å
·æå
±åç屿§ã
+å建ä¸ä¸ª`ItemBase`å`UserBase`Pydantic*模å*ï¼æè
æä»¬è¯´âschemaâï¼ï¼ä»ä»¬æ¥æå建æè¯»åæ°æ®æ¶å
·æçå
±å屿§ã
-`ItemCreate`为 å建ä¸ä¸ª`UserCreate`ç»§æ¿èªå®ä»¬çææå±æ§ï¼å æ¤å®ä»¬å°å
·æç¸åç屿§ï¼ï¼ä»¥åå建æéçä»»ä½å
¶ä»æ°æ®ï¼å±æ§ï¼ã
+ç¶åå建ä¸ä¸ªç»§æ¿èªä»ä»¬ç`ItemCreate`å`UserCreate`ï¼å¹¶æ·»å åå»ºæ¶æéçå
¶ä»æ°æ®ï¼æå±æ§ï¼ã
å æ¤å¨å建æ¶ä¹åºå½æä¸ä¸ª`password`屿§ã
-使¯ä¸ºäºå®å
¨èµ·è§ï¼`password`ä¸ä¼åºç°å¨å
¶ä»åç±» Pydantic*模å*ä¸ï¼ä¾å¦ç¨æ·è¯·æ±æ¶ä¸åºè¯¥ä» API è¿åååºä¸å
å«å®ã
+使¯ä¸ºäºå®å
¨èµ·è§ï¼`password`ä¸ä¼åºç°å¨å
¶ä»åç±» Pydantic*模å*ä¸ï¼ä¾å¦éè¿API读åä¸ä¸ªç¨æ·æ°æ®æ¶ï¼å®ä¸åºå½å
å«å¨å
ã
=== "Python 3.10+"
@@ -368,7 +375,7 @@ Pydantic`orm_mode`å°åè¯ Pydantic*模å*è¯»åæ°æ®ï¼å³å®ä¸æ¯ä¸ä¸ª`di
id = data["id"]
```
-å°è¯ä»å±æ§ä¸è·åå®ï¼å¦ï¼
+å®è¿ä¼å°è¯ä»å±æ§ä¸è·åå®ï¼å¦ï¼
```Python
id = data.id
@@ -404,7 +411,7 @@ current_user.items
å¨è¿ä¸ªæä»¶ä¸ï¼æä»¬å°ç¼åå¯éç¨ç彿°ç¨æ¥ä¸æ°æ®åºä¸çæ°æ®è¿è¡äº¤äºã
-**CRUD**åå«ä¸ºï¼**å¢å **ã**æ¥è¯¢**ã**æ´æ¹**å**å é¤**ï¼å³å¢å æ¹æ¥ã
+**CRUD**åå«ä¸ºï¼å¢å ï¼**C**reateï¼ãæ¥è¯¢ï¼**R**eadï¼ãæ´æ¹ï¼**U**pdateï¼ãå é¤ï¼**D**eleteï¼ï¼å³å¢å æ¹æ¥ã
...è½ç¶å¨è¿ä¸ªä¾åä¸æä»¬åªæ¯æ°å¢åæ¥è¯¢ã
@@ -414,7 +421,7 @@ current_user.items
导å
¥ä¹åç`models`ï¼SQLAlchemy 模åï¼å`schemas`ï¼Pydantic*模å*/模å¼ï¼ã
-å建ä¸äºå®ç¨å½æ°æ¥å®æï¼
+å建ä¸äºå·¥å
·å½æ°æ¥å®æï¼
* éè¿ ID åçµåé®ä»¶æ¥è¯¢åä¸ªç¨æ·ã
* æ¥è¯¢å¤ä¸ªç¨æ·ã
@@ -429,14 +436,14 @@ current_user.items
### åå»ºæ°æ®
-ç°å¨å建å®ç¨ç¨åºå½æ°æ¥åå»ºæ°æ®ã
+ç°å¨å建工å
·å½æ°æ¥åå»ºæ°æ®ã
å®çæ¥éª¤æ¯ï¼
* ä½¿ç¨æ¨çæ°æ®å建ä¸ä¸ª SQLAlchemy 模å*å®ä¾ã*
-* 使ç¨`add`æ¥å°è¯¥å®ä¾å¯¹è±¡æ·»å å°æ¨çæ°æ®åºã
-* 使ç¨`commit`æ¥å¯¹æ°æ®åºçäºå¡æäº¤ï¼ä»¥ä¾¿ä¿åå®ä»¬ï¼ã
-* 使ç¨`refresh`æ¥å·æ°æ¨çæ°æ®åºå®ä¾ï¼ä»¥ä¾¿å®å
嫿¥èªæ°æ®åºç任使°æ°æ®ï¼ä¾å¦çæç IDï¼ã
+* 使ç¨`add`æ¥å°è¯¥å®ä¾å¯¹è±¡æ·»å å°æ°æ®åºä¼è¯ã
+* 使ç¨`commit`æ¥å°æ´æ¹æäº¤å°æ°æ®åºï¼ä»¥ä¾¿ä¿åå®ä»¬ï¼ã
+* 使ç¨`refresh`æ¥å·æ°æ¨çå®ä¾å¯¹è±¡ï¼ä»¥ä¾¿å®å
嫿¥èªæ°æ®åºç任使°æ°æ®ï¼ä¾å¦çæç IDï¼ã
```Python hl_lines="18-24 31-36"
{!../../../docs_src/sql_databases/sql_app/crud.py!}
@@ -505,11 +512,11 @@ current_user.items
ç°å¨ä½¿ç¨æä»¬å¨`sql_app/database.py`æä»¶ä¸å建ç`SessionLocal`æ¥å建ä¾èµé¡¹ã
-æä»¬éè¦æ¯ä¸ªè¯·æ±æä¸ä¸ªç¬ç«çæ°æ®åºä¼è¯/è¿æ¥ï¼`SessionLocal`ï¼ï¼å¨ææè¯·æ±ä¸ä½¿ç¨ç¸åçä¼è¯ï¼ç¶åå¨è¯·æ±å®æåå
³éå®ã
+æä»¬éè¦æ¯ä¸ªè¯·æ±æä¸ä¸ªç¬ç«çæ°æ®åºä¼è¯/è¿æ¥ï¼`SessionLocal`ï¼ï¼å¨æ´ä¸ªè¯·æ±ä¸ä½¿ç¨ç¸åçä¼è¯ï¼ç¶åå¨è¯·æ±å®æåå
³éå®ã
ç¶åå°ä¸ºä¸ä¸ä¸ªè¯·æ±å建ä¸ä¸ªæ°ä¼è¯ã
-为æ¤ï¼æä»¬å°å建ä¸ä¸ªæ°çä¾èµé¡¹`yield`ï¼æ£å¦åé¢å
³äº[Dependencies with`yield`](https://fastapi.tiangolo.com/zh/tutorial/dependencies/dependencies-with-yield/)çé¨åä¸æè§£éç飿 ·ã
+为æ¤ï¼æä»¬å°å建ä¸ä¸ªå
å«`yield`çä¾èµé¡¹ï¼æ£å¦åé¢å
³äº[Dependencies with`yield`](https://fastapi.tiangolo.com/zh/tutorial/dependencies/dependencies-with-yield/)çé¨åä¸æè§£éç飿 ·ã
æä»¬çä¾èµé¡¹å°å建ä¸ä¸ªæ°ç SQLAlchemy `SessionLocal`ï¼å®å°å¨å个请æ±ä¸ä½¿ç¨ï¼ç¶åå¨è¯·æ±å®æåå
³éå®ã
@@ -729,13 +736,13 @@ $ uvicorn sql_app.main:app --reload
## ä¸é´ä»¶æ¿ä»£æ°æ®åºä¼è¯
-å¦æä½ ä¸è½ä½¿ç¨ä¾èµé¡¹`yield`ââä¾å¦ï¼å¦æä½ 没æä½¿ç¨**Python 3.7**å¹¶ä¸ä¸è½å®è£
ä¸é¢æå°ç**Python 3.6**çâbackportsâ ââä½ å¯ä»¥å¨ç±»ä¼¼çâä¸é´ä»¶âä¸è®¾ç½®ä¼è¯æ¹æ³ã
+å¦æä½ ä¸è½ä½¿ç¨å¸¦æ`yield`çä¾èµé¡¹ââä¾å¦ï¼å¦æä½ 没æä½¿ç¨**Python 3.7**å¹¶ä¸ä¸è½å®è£
ä¸é¢æå°ç**Python 3.6**çâbackportsâ ââä½ å¯ä»¥ä½¿ç¨ç±»ä¼¼çæ¹æ³å¨âä¸é´ä»¶âä¸è®¾ç½®ä¼è¯ã
-âä¸é´ä»¶âåºæ¬åè½æ¯ä¸ä¸ªä¸ºæ¯ä¸ªè¯·æ±æ§è¡ç彿°å¨è¯·æ±ä¹åè¿è¡æ§è¡ç¸åºç代ç ï¼ä»¥åå¨è¯·æ±æ§è¡ä¹åæ§è¡ç¸åºç代ç ã
+âä¸é´ä»¶âåºæ¬ä¸æ¯ä¸ä¸ªå¯¹æ¯ä¸ªè¯·æ±é½æ§è¡ç彿°ï¼å
¶ä¸ä¸äºä»£ç å¨ç«¯ç¹å½æ°ä¹åæ§è¡ï¼å¦ä¸äºä»£ç å¨ç«¯ç¹å½æ°ä¹åæ§è¡ã
### å建ä¸é´ä»¶
-æä»¬å°æ·»å ä¸é´ä»¶ï¼åªæ¯ä¸ä¸ªå½æ°ï¼å°ä¸ºæ¯ä¸ªè¯·æ±å建ä¸ä¸ªæ°ç SQLAlchemy`SessionLocal`ï¼å°å
¶æ·»å å°è¯·æ±ä¸ï¼ç¶åå¨è¯·æ±å®æåå
³éå®ã
+æä»¬è¦æ·»å çä¸é´ä»¶ï¼åªæ¯ä¸ä¸ªå½æ°ï¼å°ä¸ºæ¯ä¸ªè¯·æ±å建ä¸ä¸ªæ°ç SQLAlchemy`SessionLocal`ï¼å°å
¶æ·»å å°è¯·æ±ä¸ï¼ç¶åå¨è¯·æ±å®æåå
³éå®ã
=== "Python 3.9+"
@@ -760,7 +767,7 @@ $ uvicorn sql_app.main:app --reload
`request.state`æ¯æ¯ä¸ª`Request`对象ç屿§ãå®ç¨äºåå¨éå å°è¯·æ±æ¬èº«çä»»æå¯¹è±¡ï¼ä¾å¦æ¬ä¾ä¸çæ°æ®åºä¼è¯ãæ¨å¯ä»¥å¨[Starlette çå
³äº`Request`state](https://www.starlette.io/requests/#other-state)çææ¡£ä¸äºè§£æ´å¤ä¿¡æ¯ã
-对äºè¿ç§æ
åµä¸ï¼å®å¸®å©æä»¬ç¡®ä¿å¨ææè¯·æ±ä¸ä½¿ç¨åä¸ªæ°æ®åºä¼è¯ï¼ç¶åå
³éï¼å¨ä¸é´ä»¶ä¸ï¼ã
+对äºè¿ç§æ
åµä¸ï¼å®å¸®å©æä»¬ç¡®ä¿å¨æ´ä¸ªè¯·æ±ä¸ä½¿ç¨åä¸ªæ°æ®åºä¼è¯ï¼ç¶åå
³éï¼å¨ä¸é´ä»¶ä¸ï¼ã
### 使ç¨`yield`ä¾èµé¡¹ä¸ä½¿ç¨ä¸é´ä»¶çåºå«
@@ -776,9 +783,9 @@ $ uvicorn sql_app.main:app --reload
* å³ä½¿å¤ç该请æ±ç*è·¯å¾æä½*ä¸éè¦æ°æ®åºã
!!! tip
- `tyield`å½ä¾èµé¡¹ 足以满足ç¨ä¾æ¶ï¼ä½¿ç¨`tyield`ä¾èµé¡¹æ¹æ³ä¼æ´å¥½ã
+ æå¥½ä½¿ç¨å¸¦æyieldçä¾èµé¡¹ï¼å¦æè¿è¶³å¤æ»¡è¶³ç¨ä¾éæ±
!!! info
- `yield`çä¾èµé¡¹æ¯æè¿åå å
¥**FastAPI**ä¸çã
+ 带æ`yield`çä¾èµé¡¹æ¯æè¿åå å
¥**FastAPI**ä¸çã
æä»¥æ¬æç¨çå
åçæ¬åªæå¸¦æä¸é´ä»¶ç示ä¾ï¼å¹¶ä¸å¯è½æå¤ä¸ªåºç¨ç¨åºä½¿ç¨ä¸é´ä»¶è¿è¡æ°æ®åºä¼è¯ç®¡çã