使用db.create_all()无法创建SQLite数据库的问题求助
解决Flask SQLite数据库未生成的问题
问题排查与修复步骤
1. 修正模型类方法名拼写错误
你的Todo类中定义的__retr__是拼写错误,正确的特殊方法名应为__repr__,这个错误会导致模型类定义异常,影响表创建:
def __repr__(self) -> str: return f"{self.sno} - {self.title}"
2. 补全Shell命令中的app导入
你在PowerShell的Python交互环境中执行命令时,未导入app对象,导致无法调用app.app_context()。正确的命令序列如下:
from app import app, db, Todo with app.app_context(): db.create_all()
3. 确认命令执行的目录位置
SQLite相对路径sqlite:///todo.db会在当前Python交互环境的工作目录下生成文件,而非Flask项目根目录。建议先切换到项目根目录再执行命令:
cd "你的Flask项目所在完整路径" python
之后再执行导入和建表命令。
4. 可选:在代码中自动初始化表
可以在程序启动逻辑中添加表创建代码,这样启动Flask应用时会自动检查并创建所需表:
if __name__ == '__main__': with app.app_context(): db.create_all() app.run(debug=True, port=8000)
内容的提问来源于stack exchange,提问作者polkamonster
相关产品推荐
相关产品推荐

