SQLModelとSQLAlchemyの違いって何??
PythonでデータベースをさわるとよくでてくるのがSQLAlchemyとSQLModel。「名前は似てるけど何が違うの?」「どっちを使えばいいの?」と迷ってしまう人も多いはず。今回はこの2つの違いを、できるだけわかりやすく説明します!
そもそもSQLAlchemyって何?
SQLAlchemyは、Pythonでデータベースを操作するためのライブラリです。SQL文を直接書かなくても、Pythonのコードでデータベースを扱えるようにしてくれる便利なツール、と思ってください。
例えば、ユーザー情報を取り出したいときにこんなふうに書けます。
python
from sqlalchemy.orm import Session
users = session.query(User).filter(User.age > 20).all() 長年使われていて機能も豊富、Pythonでデータベースを扱うときの定番ライブラリです。
じゃあSQLModelは?
SQLModelは、わりと最近(2021年頃)登場したライブラリです。FastAPIを作った人(Sebastián Ramírez氏)が開発していて、SQLAlchemyとPydanticの「いいとこ取り」をしたのが特徴です。
- SQLAlchemy → データベース操作が得意
- Pydantic → データのバリデーション(検証)が得意
- SQLModel → 両方の機能をまとめて使える!
書き方はこんな感じ。
python
from sqlmodel import SQLModel, Field
class User(SQLModel, table=True):
id: int = Field(primary_key=True)
name: str
age: int 型ヒント(intやstr)を書くだけで、データベースのテーブル定義もデータ検証も同時にできちゃいます。
結局、何が違うの?
ポイントを表でまとめます。
| 項目 | SQLAlchemy | SQLModel |
|---|---|---|
| 登場時期 | 古くからある定番 | 2021年〜の新しめ |
| 書きやすさ | やや複雑 | シンプル |
| バリデーション | 別ライブラリが必要 | 標準で対応 |
| FastAPIとの相性 | 普通 | バツグン |
| 情報量 | とても多い | まだ少なめ |
どっちを使えばいい?
ざっくりこんな感じで選べばOKです。
- FastAPIで小〜中規模のアプリを作る → SQLModelがラク
- 複雑な処理や大規模なシステム → SQLAlchemyが安心
- ネットの情報を頼りに学びたい → 情報の多いSQLAlchemy
まとめ
SQLModelは、SQLAlchemyを「もっと簡単に書けるようにしたもの」と思っておけば大丈夫!初心者でFastAPIを使うなら、まずはSQLModelから入るのがおすすめです。慣れてきたらSQLAlchemyの細かい機能も触ってみてください。
ぜひ自分のプロジェクトで試してみてくださいね!