2023年5月15日
前回の記事では SQLAlchemy の Session について解説しました。今回はその応用として、Celery においてどのように Session を管理するかを考えたいと思います。 関連記事: * SQLAlchemyのセッション・トランザクションを理解する * SQLAlchemyで'MySQL server has gone away'が発生した時の対処法2つ ## 結論 以下のように DB 操作を行うタスクのためのクラスを作ります。 ```python from typing impo
2023年5月14日
SQLAlchemy の Session や scoped_session、トランザクションに関して理解していきます。 ## 用語おさらい ### セッション(Session) SQLAlchemy の Session オブジェクトは、ORM マッピングされたオブジェクトの永続化に関する操作を管理するオブジェクトです。 `sqlalchemy.orm.Session` を直接インスタンス化しても良いですが、実環境では sessionmaker を使うことが一般的です。sessionmaker は
2023年2月8日
サチコ(Google Search Console)を眺めていたら `FastAPI MySQL` がそれなりに需要ありそうと思ったので、FastAPI と SQLAlchemy を組み合わせて ORM を使う方法を紹介したいと思います。最近の SQLAlchemy(1.4以降)ではマッピングされたオブジェクトに型を適用することもできるので、型ヒントを活かして型安全なコードを書くことも難しくなくなっています。 ## 環境 * Python 3.10.6 * FastAPI 0.89.1 * SQLAl
2023年1月12日
FastAPI で SQLAlchemy を使っている時に、コンテナを立てた直後は問題ないけど一定時間経過後に DB 接続が切れてしまう問題に遭遇したのでその時に調べたことのメモ。 ## 環境 * mysql 5.7.15 * SQLAlchemy 1.4.45 * mysqlclient 2.1.1 ## 問題 ``` MySQLdb.OperationalError: (2006, 'MySQL server has gone away') ``` 最後に MySQL サーバーに接続してから