[解決済み] SQLAlchemyのセッションを閉じるには?
質問
でコメントした内容に従って MySQLでsqlalchemyの接続を閉じる方法 SQLAlchemy がデータベースに作成する接続をチェックしているのですが、 Python を終了しないと接続を閉じることができないのですが、どうしたらいいですか?
このコードをPythonコンソールで実行すると、Pythonを終了するまでセッションを開いたままにしておきます。
from sqlalchemy.orm import sessionmaker
from models import OneTable, get_engine
engine = get_engine(database="mydb")
session = sessionmaker(bind=engine)()
results = session.query(OneTable.company_name).all()
# some work with the data #
session.close()
で、これを閉じるために見つけた唯一の回避策は
engine.dispose()
を最後に追加することです。
上にあげたリンクのコメント通り、今質問しているのは
-
なぜ
engine.dispose()
はセッションを閉じるために必要なのですか? -
必要ありません。
session.close()
で十分なのでは?
どのように解決するのですか?
ここでは、"session" という単語をめぐる中心的な混乱があります。 ここではよく分かりませんが、どうやら SQLAlchemy セッション と MySQL @@session で、これは MySQL に最初に接続したときと切断したときのスコープを参照します。
これら 2 つのコンセプトは は同じではありません。 . SQLAlchemy のセッションは一般的に 一つ以上のトランザクションの を表し、特定のデータベースへの接続の際の
したがって、文字通り質問された質問に対する答えは
session.close()
を呼び出すこと、つまり、 "SQLAlchemyのセッションを適切に閉じる方法"です。
しかし、質問の残りの部分は、あなたが、特定の
Session
が閉じられたときに、実際の DBAPI 接続も同様に閉じられるような、何らかの機能が必要であることを示しています。
これが意味するところは、基本的に 接続プーリング . これは、他の回答が言及しているように、十分に簡単です。 NullPoolを使用する .
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 辞書を値で並べ替えるにはどうしたらいいですか?
-
[解決済み] リストが空かどうかを確認するにはどうすればよいですか?
-
[解決済み] PHPのセッションを30分後に失効させるにはどうしたらいいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] サブフォルダからのインポートモジュール
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] Pythonでリストが空かどうかをチェックする方法は?重複