Python中sqlite数据库的文件路径怎么写

比如有个自己写的各种 sql 查询的 a.py ,使用同级文件夹内的 a.sqlite 作为数据库文件。打开数据库直接用 a.sqlite 作为输入,发现上级目录调用 a.py 时,a.sqlite 的路径不对了,是调用目录下的 a.sqlite 了。 如果这个 sql 模块要适用不用调用者的目录结构,该怎么访问本级目录呢?
Python中sqlite数据库的文件路径怎么写

3 回复

在Python里用sqlite3,数据库文件路径的写法主要看你想把数据库文件放哪儿。最直接的就是用相对路径或者绝对路径。

如果你想让数据库文件放在当前Python脚本所在的目录,直接用文件名就行:

import sqlite3

# 数据库文件会创建在当前工作目录下
conn = sqlite3.connect('my_database.db')

如果你想指定一个确切的目录,用绝对路径更靠谱,记得处理一下路径分隔符,用 os.path.join 或者 pathlib 能避免跨平台的问题:

import sqlite3
import os

# 在指定目录创建数据库文件
db_path = os.path.join('/path/to/your/directory', 'my_database.db')
conn = sqlite3.connect(db_path)

或者用 pathlib,写起来更现代:

from pathlib import Path
import sqlite3

db_path = Path('/path/to/your/directory') / 'my_database.db'
conn = sqlite3.connect(str(db_path))

有个特殊情况,如果你用 :memory: 作为路径,数据库就会完全建在内存里,程序一关数据就没了,适合临时测试:

conn = sqlite3.connect(':memory:')

总结:普通项目用相对路径,复杂部署用绝对路径,记得处理好路径字符串。


好像可以用 realpath

请使用
<br>import os<br>BASE_PATH = os.path.abspath(os.path.dirname(__file__))<br>sqlite_filename=os.path.join(BASE_PATH,'a.sqlite') <br>

回到顶部