Python Sqlite3 Get Sqlite Connection path Python Sqlite3 Get Sqlite Connection path sqlite sqlite

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.


Referencing Martijn Pieters, except hardcoding is a must, you should do this:

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