如何为Flask-SQLAlchemy项目中的SQLite数据库指定存储路径
Flask SQLite数据库路径正确配置方法
你当前配置的sqlite:////test.db使用了4个斜杠,在Windows环境下会直接映射到盘符根目录,是出现路径错误的核心原因。按照不同使用场景,正确配置方式如下:
场景1:数据库文件存放在项目根目录
直接将4个斜杠改为3个斜杠即可,配置如下:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
配置后test.db会自动生成在你的项目根目录(即示例中D:\Python Codes\python new\LMS路径下)。
场景2:指定自定义绝对路径存储
Windows环境下可以直接用正斜杠写完整路径,前缀仍然用3个斜杠,示例:
# 存放在D盘db文件夹下的写法 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///D:/db/test.db'
场景3:跨平台兼容动态路径(推荐)
使用os模块基于当前项目文件路径自动拼接,避免不同操作系统路径格式差异导致的错误,修改后的核心代码如下:
import os from flask import Flask,render_template,flash,redirect from flask.helpers import url_for from forms import Create_Account_Student_form,LoginForm from flask_sqlalchemy import SQLAlchemy app=Flask(__name__) # 获取当前文件所在目录的绝对路径 basedir = os.path.abspath(os.path.dirname(__file__)) # 拼接得到数据库文件路径,存放在项目根目录 app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'test.db') app.config['SECRET_KEY']='7738ea1a60fd3213606f4d42846d3337' # 可选:关闭废弃的修改追踪警告 app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # 后续模型、路由代码保持不变即可
注意事项
- 如果你指定的存储文件夹不存在,需要先手动创建对应文件夹,否则会抛出
OperationalError - 类Unix系统(Linux/macOS)的绝对路径使用4个斜杠前缀,比如
sqlite:////home/user/test.db,Windows环境下不要使用4个斜杠前缀
内容的提问来源于stack exchange,提问作者SPARSH PATHAK
相关产品推荐
相关产品推荐

