sqlite3接続オブジェクトが与えられた場合、sqlite3ファイルへのファイルパスを取得するにはどうすればよいですか?
質問する
25197 次
3 に答える
23
PRAGMA database_list コマンドを使用できます。
cur = con.cursor()
cur.execute("PRAGMA database_list")
rows = cur.fetchall()
for row in rows:
print(row[0], row[1], row[2])
3 番目のパラメーター (row[2]) は、データベースのファイル名です。SQLite エンジンにアタッチされたデータベースがさらに存在する可能性があることに注意してください。
$ ./list_dbs.py
0 main /home/user/dbs/test.db
2 movies /home/user/dbs/movies.db
上記は、Python コードを含むスクリプトのサンプル出力です。
于 2013-01-24T16:22:32.107 に答える
22
Python 接続オブジェクトは、この情報を保存しません。
接続を開く前にパスを保存できます。
path = '/path/to/database/file.db'
conn = sqlite3.connect(path)
database_list
または、プラグマを使用して、データベース自体にどの接続があるかを問い合わせることができます。
for id_, name, filename in conn.execute('PRAGMA database_list'):
if name == 'main' and filename is not None:
path = filename
break
接続 URI (sqlite3.connect()
パラメータで接続)を使用した場合uri=True
、ファイル名には URI パラメータまたはfile://
プレフィックスは含まれません。
于 2012-12-17T11:03:50.720 に答える