slao
slao

Reputation: 2086

Where is SQLite database stored on disk?

Where is the SQLite database stored i.e. directory path on windows 7 when created ?

Upvotes: 69

Views: 169745

Answers (10)

.databases special command

If you run this special command inside SQLite:

.databases

it lists the path of all currently connected databases. Sample output:

seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /home/me/a.db

Upvotes: 33

user20991873
user20991873

Reputation: 1

In Windows machines (Windows 2010), by default, the new SQLite database files will be stored in the same folder where Sqlite3.EXE application is stored in your machine. However , we can create a new folder in Windows and within sqlite> prompt, you may use the .cd to change to the new working directory.

It is a good idea to give a .db file extension to the new database files that you create (even though it is not mandatory to have any file extension) The SQLite command, .databases will show the default database "main" or currently created or currently opened database or all "attached" database files with file path. The .attach is useful to attach more than one database file to the current connection when we want to work with tables belonging to different databases.

Regards, Biju Joseph N., Houston TX, USA (January 12, 2023)

the database path will be displayed, when using .databases

Upvotes: 0

Oliver Nicholls
Oliver Nicholls

Reputation: 1441

In my case I think it was an access issue. I saved the SQLite files to "C:/Program Files (x86)/sqlite". I CD'd there, ran sqlite3, and created a database called test.db:

enter image description here

As you can see, I ran .database, which told me the .db file was created in the same directory, so I went to confirm in File Explorer, and it wasn't there:

enter image description here

Curiously the database was working correctly in spite of this.

It was only through trial-and-error that I discovered that I could save in some locations, but not others. It appears to me that SQLite can't save to locations that require elevation. In my case, moving from Program Files to My Documents made the issue go away.

I find it quite irritating that SQLite doesn't just tell me "access denied" instead of trying to be clever and saving to some location that I can't even find.

Upvotes: 1

Tucker
Tucker

Reputation: 77

It depends on how you initialized the database. If you used the command line shell for SQLite (e.g. sqlite3 ex1) to create the database, it'll be a path from the root of your local machine. If you used a Python script to create the database, it'll be a path from your project.

To check the former, run the command line shell:

sqlite3
sqlite> .databases

To check the path in your project, you can print the path in the connection. For example:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DATABASE = 'db'

def get_db_connection():
    print(os.path.join(BASE_DIR, DATABASE, "database.db"))
    conn = sqlite3.connect(os.path.join(BASE_DIR, DATABASE, "database.db"))
    conn.row_factory = sqlite3.Row
    return conn

Upvotes: 0

OstazMas
OstazMas

Reputation: 7

In Windows 10 if in the prompt command the path where you start sqlite is

C:\users\USER_NAME

You can find it in the user home folder. The .db file is stored where you start the sqlite command. I hope this solve the issue

Upvotes: -2

mlemos
mlemos

Reputation: 1245

A SQLite database is a regular file. It is created in your script current directory.

Upvotes: 74

Shyam Gupta
Shyam Gupta

Reputation: 511

SQLite is created in your python directory where you installed the python.

Upvotes: -1

rtfminc
rtfminc

Reputation: 6363

If you are running Rails (its the default db in Rails) check the {RAILS_ROOT}/config/database.yml file and you will see something like:

database: db/development.sqlite3

This means that it will be in the {RAILS_ROOT}/db directory.

Upvotes: 8

Sogger
Sogger

Reputation: 16142

When you call sqlite3_open() you specify the filepath the database is opened from/saved to, if it is not an absolute path it is specified relative to your current working directory.

Upvotes: 5

SingleNegationElimination
SingleNegationElimination

Reputation: 156278

There is no "standard place" for a sqlite database. The file's location is specified to the library, and may be in your home directory, in the invoking program's folder, or any other place.

If it helps, sqlite databases are, by convention, named with a .db file extension.

Upvotes: 28

Related Questions