Python Sqlite3获取Sqlite连接路径

时间:2012-12-17 10:52:59

标签: python sqlite

给定一个sqlite3连接对象,如何检索sqlite3文件的文件路径?

3 个答案:

答案 0 :(得分:19)

我们可以使用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])

第三个参数(row [2])是数据库的文件名。 请注意,可能有更多数据库附加到SQLite引擎。

$ ./list_dbs.py 
0 main /home/user/dbs/test.db
2 movies /home/user/dbs/movies.db

以上是包含Python代码的脚本的示例输出。

答案 1 :(得分:13)

Python connection object不会存储此信息。

您可以在打开连接之前存储路径:

path = '/path/to/database/file.db'
conn = sqlite3.connect(path)

或者您可以使用database_list pragma

向数据库本身询问它具有哪些连接
for id_, name, filename in conn.execute('PRAGMA database_list'):
    if name == 'main' and filename is not None:
        path = filename
        break

如果您使用connection URI(使用sqlite3.connect()参数uri=True连接),则文件名将不包含URI参数或file://前缀。

答案 2 :(得分:0)

请参考Martijn Pieters,除了必须进行硬编码之外,您还应该这样做:

path = os.path.dirname(os.path.abspath(__file__))
db = os.path.join(path, 'file.db')

conn = sqlite3.connect(db)