PyCon JP 2024

Your locale preferences have been saved. We like to think that we have excellent support for English in pretalx, but if you encounter issues or errors, please contact us!

SQLModel入門 〜クエリと型〜
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にアクセスし、レスポンスを返すまでの流れを解説


Why did you choose this topic?

SQLModelを使って直感的でとても良いなと思ったのですが、SQLModelの使いやすさとPydantic/SQLAlchemyをベースにしておりその知識を使って書けるためか、SQLModelについてまとまった知見があまり見つからなかったためです。

Knowledges and know-how the audience can get from your talk
  • 網羅的なSQLModelの知識
    • SQLModelでのモデルの定義の仕方
    • SQLModelでクエリを実行する方法
Prior knowledges speakers assume the audience to have
  • SQLの基本的な知識(CREATE TABLE文、CRUDの基本的な構文)
  • Pythonの型ヒントに関する基本的な知識
Audience experiment

Intermediate

Language of presentation

日本語

Language of presentation material

日本語

See also: 発表スライド

PythonでWeb開発をするのが好きです。Djangoの経験が多めです。FastAPIも好きです。

最近はアーキテクト的な仕事をする傍ら、所属会社の若手エンジニア育成プロジェクトの進行・教育教材の作成をしています。