Zenn
Open11

python メモ

kenmakenma
{
    // python path
    "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
    "python.envFile": "${workspaceFolder}/.venv",
    "ruff.path": [
        "${workspaceFolder}/.venv/bin/ruff"
    ],
    "[python]": {
        "editor.formatOnSave": true
    }
}
kenmakenma

https://github.com/tiangolo/sqlmodel/issues/52

table=True となっているとvalidationされない。

class Hero(SQLModel):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str = Field(index=True)
    secret_name: str
    age: Optional[int] = Field(default=None, index=True)

# name, secret_nameが指定されてないので、例外発生
hero = Hero()
class Hero(SQLModel, table=True):
    id: Optional[int] = Field(default=None, primary_key=True)
    name: str = Field(index=True)
    secret_name: str
    age: Optional[int] = Field(default=None, index=True)

# name, secret_nameが指定されてないが、table=Trueなので、例外発生しない
hero = Hero()
kenmakenma

FastAPI
エクセルファイルダウンロード のサンプル


@router.get("/download_excel1", response_class=FileResponse)
def download_excel1() -> FileResponse:
    file_path = Path("example.xlsx")

    if file_path.exists():
        return FileResponse(
            path=file_path,
            filename="example.xlsx",  # ダウンロード時のファイル名
            media_type=MEDIA_TYPE_EXCEL,
        )
    raise HTTPException(status_code=404)


@router.get("/download_excel2", response_class=StreamingResponse)
def download_excel2() -> StreamingResponse:
    output = BytesIO()
    workbook = openpyxl.Workbook()
    sheet = workbook.active

    assert sheet is not None  # None でないことを明示  # noqa: S101
    sheet["A1"] = "Hello, World!"
    workbook.save(output)
    output.seek(0)  # ストリームの先頭に移動

    # ストリームをレスポンスとして返す
    return StreamingResponse(
        output,
        media_type=MEDIA_TYPE_EXCEL,
        headers={"Content-Disposition": "attachment; filename=example.xlsx"},
    )
ログインするとコメントできます