始めに
自分用メモ。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に切り替えていただければと考えています。