私はpybottleをWebフレームワークとして、datasetをデータベースハンドラとして単純なREST APIを作成しました。私は、データセットがデータベースへの接続をどのように処理(オープンとクローズ)し、どのくらいこれを気にする必要があるのだろうかと思います。Webアプリケーション内のPythonデータセット
次のことを考えてみましょう:私は(別のファイル内にある)は、Webアプリケーションからsome_function()
を呼び出すとき
db = dataset.connect('sqlite:///database.db')
table = db['table']
def some_function():
# do some manipulation (eg. insert) in 'table'
何が起こりますか?関数の実行後、データセットはデータベースへの接続を適切に開いて閉じますか?あるいは、私はすべての関数呼び出しで新しいオープンな接続を持っていますか?
ありがとうございます!しかし、私は上記のコードスニペットがうまくいくかどうかを明確に理解していませんでした。複数のユーザがWebアプリケーションで 'some_function()'を同時に呼び出すとどうなりますか?あるデータベース操作がもう一方の操作が完了するまで待つか?書き込み操作後に接続を自動的に閉じますか?コードスニペットで何かを変更する必要がありますか? – wildthing
@wildthing 'some_function'はコード内で接続を開きません。これはモジュールレベルで行われます(関数外)。 SQLAlchemyは、接続がすでに存在しているかどうかをチェックし、trueの場合は現在の接続を使用し、それ以外の場合は新しい接続を確立します。すべての操作で同じ接続が使用されますが、手動で開く/閉じることはお勧めできません。接続はそのまま維持されます。接続の処理方法については、SQLAlchemyのドキュメントを参照してください。 – tuned