2024-09-28 –, 20F Track1
ここ数年PythonのWeb開発において目立つ存在になっているFastAPIについて、FastAPI開発者が提供するサンプルのリポジトリでは、データ操作のためのパッケージとしてSQLModelというORMが使われています。
クラス定義はPydantic、クエリはSQLAlchemyをベースとしているSQLModelは直感的で使いやすいですが、それゆえに使い方のノウハウが少ないように思えます。
このトークでは、SQLModelの基本的な使い方を話しながらPydantic/SQLAlchemyとの違いにも触れていきます。
構成
-
SQLモデルでのモデルクラスの書き方
-
クエリの書き方
-
静的解析ツールの設定方法
-
alembicを使ったデータベースのスキーマの変更管理
-
FastAPIのアプリ内での使い方
対象者
- Djangoなど別のORMを使ったことがあるが、SQLModelには馴染みのない方
話さないこと
- SQLの基本的な構文(SELCT, INSERT, JOINなど)
- 素のPythonでの型ヒントの基本的な構文
- 複数DBに接続する場合など応用的な使い方
「SQLモデルでのモデルクラスの書き方」では下記を話します。
* 基本的な型定義(int, strなど)
* Fieldクラスのオプション(default, primary_key, indexなど)
* 外部キー接続のある項目の型定義
* One to Many
* Many to Many
* SQLAlchemyでの定義の方法との比較(よしあしではなく、単純な構文の違いとして)
「クエリの書き方」では下記を話します。
* SELECT
* JOIN
* 集計関数
* INSERT
* UPDATE
* DELETE
* SQL文の確認方法
* クエリの返り値の型ヒントの付け方
「FastAPIのアプリ内での使い方」では下記を話します。
* FastAPI開発者が提供するサンプルのリポジトリのユーザーを作成するAPI、ユーザーを取得するAPIのリクエストが送られてからDBにアクセスし、レスポンスを返すまでの流れを解説
SQLModelを使って直感的でとても良いなと思ったのですが、SQLModelの使いやすさとPydantic/SQLAlchemyをベースにしておりその知識を使って書けるためか、SQLModelについてまとまった知見があまり見つからなかったためです。
Knowledges and know-how the audience can get from your talk –- 網羅的なSQLModelの知識
- SQLModelでのモデルの定義の仕方
- SQLModelでクエリを実行する方法
- SQLの基本的な知識(CREATE TABLE文、CRUDの基本的な構文)
- Pythonの型ヒントに関する基本的な知識
Intermediate
Language of presentation –日本語
Language of presentation material –日本語
PythonでWeb開発をするのが好きです。Djangoの経験が多めです。FastAPIも好きです。
最近はアーキテクト的な仕事をする傍ら、所属会社の若手エンジニア育成プロジェクトの進行・教育教材の作成をしています。