'orm_mode'?あーはいはい、DBと紐付けてくれる便利なやつでしょ、知ってます知ってます、くらいののりで全然公式見てませんでした。すみません。
ORM(オブジェクトリレーションマッピング)のデータ読取に便利
ちょっと面倒だったので、正確さのためにFastAPI公式チュートから抜粋しながらメモってきます。
from typing import List, Optional
from pydantic import BaseModel
class User(UserBase):
id: int
is_active: bool
items: List[Item] = []
class Config:
orm_mode = True
id = data["id"]
id = data.id
current_user.items
編集サボった私のせいですが、読みづらくてしょうがないですね。
要は、DBから取得したデータなどに対して、dictとかじゃなくてもそのままAPIに渡せるよ、ということらしい。
例えば↓みたいな感じで、CRUD用の(get_item(db_session, hogehoge)みたいな)utility関数で、DBからデータを(SQLAlchemy経由のORMオブジェクトとして)取得した際に、パスオペレータのresponse_modelに取得したデータをORMオブジェクト(属性を保持するSQLAlchemyのモデル)として、そのままAPIに渡せる(あるいはそこからアプリケーションへとreturnできる)、というのが嬉しいっぽい。
@app.get("/items/", response_model=List[schemas.Item])
def read_items(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
items = crud.get_items(db, skip=skip, limit=limit)
return items
相変わらず、語学力、文章力、論理数理的素養にかけるのでうまくまとめられていないし、多分変なとこあるけど、随時修正していきます。