2023年2月20日月曜日

RuntimeError: A 'SQLAlchemy' instance has already been registered on this Flask app. Import and use that instance instead.

RuntimeError: A 'SQLAlchemy' instance has already been registered on this Flask app. Import and use that instance instead.

概要

flask をアップデートした際に発生しました

環境

  • flask 2.1.1 -> 2.2.3
  • flask-sqlalchemy 2.5.1 -> 3.0.3
    • sqlalchemy 1.4.46 -> 2.0.3

対応方法

自分の環境の対応方法を紹介します

db.init_app(app)

を実行している箇所を削除し

db = SQLAlchemy(app)

で初期化するようにしたら解消しました

Tips

  • db = SQLAlchemy(app) は必ず一箇所で行うこと他で db を使いたい場合は import する
  • db.init_app(app) は普通にコーディングしていたら使わないはず、どうしてもアプリケーションコンテキストを push するようなケースでは意図的に呼び出す感じ

0 件のコメント:

コメントを投稿