Jan*_*nar 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])
Run Code Online (Sandbox Code Playgroud)
第三个参数(row [2])是数据库的文件名.请注意,可能有更多数据库附加到SQLite引擎.
$ ./list_dbs.py
0 main /home/user/dbs/test.db
2 movies /home/user/dbs/movies.db
Run Code Online (Sandbox Code Playgroud)
以上是包含Python代码的脚本的示例输出.
Mar*_*ers 13
在Python的连接对象不存储这些信息.
您可以在打开连接之前存储路径:
path = '/path/to/database/file.db'
conn = sqlite3.connect(path)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用database_list编译指示向数据库本身询问它具有哪些连接:
for id_, name, filename in conn.execute('PRAGMA database_list'):
if name == 'main' and filename is not None:
path = filename
break
Run Code Online (Sandbox Code Playgroud)
如果使用连接URI(与sqlite3.connect()参数连接uri=True),则文件名将不包含URI参数或file://前缀.
小智 5
参考 Martijn Pieters,除了硬编码是必须的,你应该这样做:
path = os.path.dirname(os.path.abspath(__file__))
db = os.path.join(path, 'file.db')
conn = sqlite3.connect(db)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14334 次 |
| 最近记录: |