docker-composeでFastAPI+SQLAlchemy+SQlite
2022年12月24日
ソース
環境
% docker --version
Docker version 20.10.11, build dea9396
% docker-compose version
Docker Compose version v2.2.1
構成
.
├── docker-compose.yml
├── docker
│ └── edgedb-api
│ └── Dockerfile
└── edged-api
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
概要
main.py
で初期処理(ここでは、Statusのレコード全削除して一つだけ挿入している)、作りたいAPIのパスと処理を記述する
- DBとの連携のうち、セッションは
database.py
、DBデータへアクセスするコードはcrud.py
、APIのスキーマはschemas.py
に記述している
- APIを追加する際には下記の編集が必要
schemas.py
:POSTで引数があるのであればスキーマを作成
crud.py
:DBデータの処理を記述
main.py
:パスを設定し、crud.py
の関数を呼び出す処理を記述
- (新しいモデルを使う場合には
models.py
を編集)
from fastapi import Depends, FastAPI
from sqlalchemy.orm import Session
import app.crud as crud
import app.models as models
import app.schemas as schemas
from app.database import SessionLocal, engine
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
crud.initialize_status(SessionLocal())
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.get("/get-status/")
def get_status(db: Session = Depends(get_db)):
return crud.get_status(db)
@app.post("/update-status/")
def update_status(status: schemas.StatusUpdate, db: Session = Depends(get_db)):
return crud.update_status(db=db, status=status)
参考にしたサイト
ディスカッション
コメント一覧
まだ、コメントがありません