2024-05-01から1ヶ月間の記事一覧
python-multipart がインストール済であることが前提です。チュートリアルを見て作ったサンプルです。2通りです import uvicorn from fastapi import FastAPI, File, UploadFile import csv from io import StringIO app = FastAPI() @app.post("/upload1")…
FastAPI HTTP 422 エラーの時のレスポンスを定義する。 - Oboe吹きプログラマの黙示録 の方法や、 APIRouter を使った時のエラーハンドリング - Oboe吹きプログラマの黙示録 の方法でも、 RequestValidationError のレスポンスパターンに沿って返すメッセー…
FastAPI で、APIRouter を使った時のバリデーションエラーハンドリングを メインのスクリプトで FastAPI() で、include_router(router: APIRouter) するのと同時に FastAPI の exception_handler を書く方法だと、APIRouter で折角、ルート毎に書いていても …
SQLAlchemy のセッションの close 漏れを避けるために context manager で管理する。 つまり with文で必ず close を機能させる。PostgreSQLを使用した時の以下のスクリプト、他のDBでも同様に 用意すると良いであろう。database.py # -*- coding: utf-8 -*- …
FastAPI で、HTTPーPOSTあるいは、PUT で送るパラメータのバリデーションを書く時、 任意の日付以降の日を受け付けるようにするバリデーションを書く場合 以下のように、Field の gt や ge による書き方はダメである。 一見でできても良さそうなのに、 class…
enum をリクエストパラメータにする、つまり決められた単語のみを リクエストのパラメータにする。方法である。Enum を定義する from enum import Enum class ModelName(str, Enum): Red = "Red" Green = "Green" Blue = "Blue" Yellow = "Yellow" Enum Mode…
PostgreSQL の場合現在の接続状況を見る。 SELECT * FROM pg_stat_activity 現在接続中のセッションは、 WHERE state = 'active' あるいは、 WHERE xact_start IS NOT NULL で、抽出する。SELECT pg_terminate_backend(PID) で強制的に切断する。 MySQLの場…
リクエストのバリデーションエラーによる HTTP status=422 のレスポンスは、 FastAPI デフォルトでは、以下のような JSON のレスポンスを返してしまう。パスパラメータに整数(int)を期待するところに数値に解析できない文字列でリクエストをした時、 { "de…
2024年5月時点で調べてみた。 zipcloudポストくん郵便番号検索 - 日本郵便株式会社zipcloudとポストくんは、JSONレスポンスを返してくれるけど、 日本郵便は、JSONを返してくれない。 zipcloud URL https://zipcloud.ibsnet.co.jp/api/search パラメータ名 z…
FastAPI で1つのソースで FastAPI() 生成、パス全てを定義するのは、 構築するAPIが適度な数であれば、肥大化したソースになる可能性も低いし 許容できるであろう。 ・APIがそこそこ多い。 ・複数開発者で分担したい。 これを解決させるために、APIRouter …
Map<String, List<String>> が存在した時、キーに対するリストの存在をチェックして リストに追加するのに、ついつい、なんとも長いコードを書いてました。 Map の値にリストなどを持たせる場合の書きやすさと効率 - Oboe吹きプログラマの黙示録 にしても、以下のようにしても、 M</string,>…
JSONからYAMLのみ https://www.site24x7.com/ja/tools/json-to-yaml.htmlhttps://jsonformatter.org/json-to-yaml https://codebeautify.org/json-to-yaml 双方向可能 https://www.bairesdev.com/tools/json2yaml/ ・クリアするボタンやリンクが無いhttps://…
結構、参考になる解説サイトがあるもので、 チュートリアル - ユーザーガイド - FastAPI ここを見て、まずは必要最低限を書きます import uvicorn from fastapi import FastAPI app = FastAPI() @app.get("/") def root(): a = "sample" return {"hello": a}…
PyCharm Professional版には、FastAPIが備わっていて FastAPIのプロジェクトを新規作成する時に便利ですが、 https://pleiades.io/help/pycharm/fastapi-project.html#coding-assistance Community版を使っていると、以下に相当するインストールをすれば済み…
PostgreSQL 8.4 以上で使えるようになったウィンドウ関数 テーブルのレコード総数を SELECT句に含めたい場合 COUNT(1) OVER() を指定する。 SELECT *, COUNT(1) OVER() AS total FRON items これは、MySQL でも使える。同様に行番号を SELECT句に付与したい…