Python Sqlite3 Get Sqlite Connection path
We can use the PRAGMA database_list command.
cur = con.cursor()cur.execute("PRAGMA database_list")rows = cur.fetchall()for row in rows: print(row[0], row[1], row[2])
The third parameter (row[2]) is the file name of the database.Note that there could be more databases attached to SQLite engine.
$ ./list_dbs.py 0 main /home/user/dbs/test.db2 movies /home/user/dbs/movies.db
The above is a sample output of a script that contains the Python code.
The Python connection object doesn't store this information.
You could store the path before you open the connection:
path = '/path/to/database/file.db'conn = sqlite3.connect(path)
or you can ask the database itself what connections it has, using the database_list
pragma:
for id_, name, filename in conn.execute('PRAGMA database_list'): if name == 'main' and filename is not None: path = filename break
If you used a connection URI (connecting with the sqlite3.connect()
parameter uri=True
), the filename will not include the URI parameters or the file://
prefix.