You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用db.create_all()仍报sqlite3.OperationalError: no such table错误如何解决

问题修复方案

1. 修复基础语法错误

models.py中password_hash字段定义行末尾缺失右括号,修正为:

password_hash = db.Column(db.String(length=60),nullable=False)

2. 修复__init__.py导入与执行顺序问题

你当前的初始化逻辑没有将模型注册到SQLAlchemy实例中,导致create_all无法识别要创建的表,调整后的完整代码如下:

from os import name
from flask import Flask, current_app, request
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
# 先加载配置,再初始化数据库实例
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SECRET_KEY'] = 'this is secret key'

db = SQLAlchemy(app)

# 必须在db初始化完成后导入模型和路由,让SQLAlchemy识别到表结构
from application.models import Employee
from application import routes

with app.app_context():
    print(current_app.name)
    # 可直接在此处执行建表操作,也可后续在终端执行
    db.create_all()

3. 删除冗余导入语句

routes.py第一行from application import routes属于循环导入的冗余代码,直接删除即可,避免导入异常。

4. 正确执行建表操作

  • 先删除项目根目录下已生成的空database.db文件,避免残留冲突
  • 终端进入项目根目录,执行以下命令手动建表:
from application import app, db
from application.models import Employee
with app.app_context():
    db.create_all()

内容的提问来源于stack exchange,提问作者satishbaradiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:42:03