[解決済み] Python SQLiteでデータベース接続を閉じない場合はどうすればよいですか?
2023-03-27 06:11:25
質問
以下のようなことをやっています。
conn = sqlite3.connect(db_filename)
with conn:
cur = conn.cursor()
cur.execute( ... )
with
は自動的に変更をコミットします。しかし、ドキュメントには接続を閉じることについては何も書かれていません。
実際には、私は
conn
を使うことができます(テスト済み)。したがって、コンテキスト・マネージャが接続を閉じていないようです。
手動で接続を閉じなければならないのでしょうか。開いたままにしておくとどうなりますか?
EDIT
私の所見です。
-
は
接続が閉じられていない
をコンテキストマネージャでテストして確認しました。そこで
__exit__
を実行すると、コンテキスト・マネージャは変更をコミットするだけです。conn.commit()
-
with conn
そしてwith sqlite3.connect(db_filename) as conn
は同じなので、どちらを使っても接続は維持されます。 -
with
ステートメントは新しいスコープを作成しないので、with のスイートの中で作成されたすべての変数は、その外側からアクセスできます。 - 最後に、手動で接続を閉じる必要があります。
どのように解決するのですか?
SQLite データベースを閉じないとどうなるかという具体的な質問に対する答えは非常にシンプルで、どのプログラミング言語でも SQLite を使用する場合に当てはまります。 接続がコードによって明示的に、またはプログラムの終了によって暗黙的に閉じられると、未処理のトランザクションはすべてロールバックされます。 (ロールバックは、実際には、次にデータベースを開くプログラムによって行われます。) 未処理のトランザクションが開いていない場合は、何も起こりません。
これは、プロセス終了前に常にデータベースを閉じることについてあまり心配する必要がないこと、そして、適切な時点でそれらを開始しコミットすることを確実にするトランザクションに注意を払う必要があることを意味します。
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] dict を txt ファイルに書き、それを読み取る?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] withステートメントで定義された変数がwithブロックの外部で使用可能か?