🐍
SQLAlchemyではselectinloadを使うのが安定
始めに
自分用メモ。sqlalchemy
ではeager load
をする際にsubqueryload
とselectinload
等々さまざまなload方法を指定できます。
しかし、片方はdeprecated
までは設定されていませんが、非推奨なloading方法なのでそれを忘れないようにするための記事です。
環境
- Python
- 3.12.4
- SQLAlchemy
- 2.0.32
実装
selectinload
の方が推奨されている。SQLAlchemyがV1のころはsubqueryload
も使用されていたが、V2になってからは非推奨な場面が増えています。
もし、複数キーで突合したい場合はselectinload
を使用する必要がありますが、単一キーで突合したい場合にはselectinload
を使用する必要があります。
詳細は公式ヘルプを参照してください。
ソースコード
なし。
終わりに
実際に本番でSQLAlchemy
を運用していました。
あくまで感覚値で申し訳ないのですが、subqueryload
のテストが甘いのかライブラリアップデートのたびに不具合が発生しているように感じます。
少なくとも報告が上がっているうえで踏んだ不具合は次のIssueです。ほかにもsubqueryload
絡みで踏んだ不具合はあるのですが、Issue
としては見つかりませんでした。
このブログを見てくださった方が一人でも早くsubqueryload
からselectinload
に切り替えていただければと考えています。
Discussion