もし私がpython内からsqlite3を使ってデータベースを構築すると、それはデータベースファイルを編集するプロセスと呼ばれますか?python/sqlite3 - ファイルを書き込むプロセスはどれですか?
現在、コミットされている挿入がない場合でも、データベースが閉じられていないことをシェルから認識できますか?
もし私がpython内からsqlite3を使ってデータベースを構築すると、それはデータベースファイルを編集するプロセスと呼ばれますか?python/sqlite3 - ファイルを書き込むプロセスはどれですか?
現在、コミットされている挿入がない場合でも、データベースが閉じられていないことをシェルから認識できますか?
SQLiteは埋め込みデータベースなので、別のプロセスはありません。
lsof
または類似のツールを使用して、Pythonプロセスにデータベースファイルに対するオープンハンドルがあるかどうかを確認できます。ただし、そのようなハンドルはオープンな接続に対応します。アクティブなトランザクションがあるかどうかはわかりません。
トランザクションによってDBファイルがロックされます。 lslk
またはlslocks
でそれをチェックすることができます。しかし、実際にDBを使って何かをしたいのであれば、SQLite自体の同期メカニズムを使い、BEGIN EXCLUSIVEを実行しようとする方が良いかもしれません。
私は、lsofがpythonの行 'conn = sqlite3.connect( 'database.db')'と 'conn.close()'の間にファイルを開いているかどうかを質問するように指定しました。 –
'lsof -c python - $ database'をチェックすると、pythonプロセスがデータベースでの作業を終えたことがわかりますか? –