开发者

Where is SQLite database stored on disk?

开发者 https://www.devze.com 2023-02-12 18:34 出处:网络
Where is the SQL开发者_高级运维ite database stored i.e. directory path on windows 7 when created ?A SQLite database is a regular file. It is created in your script current directory..databases

Where is the SQL开发者_高级运维ite database stored i.e. directory path on windows 7 when created ?


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


.databases

If you run this command inside SQLite

.databases

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

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


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.


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.


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.


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


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:

Where is SQLite database stored on disk?

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:

Where is SQLite database stored on disk?

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.


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


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


SQLit Database is simply a file where your local data is stored on your local machine


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

0

精彩评论

暂无评论...
验证码 换一张
取 消