【问题标题】:flask/sqlalchemy - OperationalError: (sqlite3.OperationalError) no such tableflask/sqlalchemy - OperationalError: (sqlite3.OperationalError) 没有这样的表
【发布时间】:2015-07-30 10:18:43
【问题描述】:

我收到以下错误:

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: s_amodel [SQL: 'INSERT INTO s_amodel

我的文件 forms.py

​​>
from flask_wtf import Form
class SAForm(Form):

models.py

​​>
from app.app_and_db import db 

class SAmodel(db.Model):
    id = db.Column(db.Integer(), primary_key=True)

views.py

​​>
from app.app_and_db import app, db
from app.sa.forms import SAForm
from app.sa.models import SAmodel

@sa_blueprint.route('/sa/new', methods=['GET','POST'])
def new_sa():

        form = SAForm(request.form, SAmodel)

        if request.method=='POST' and form.validate():
            model = SAmodel()
            form.populate_obj(model)
            db.session.add(model)
            db.session.commit()
            return redirect(url_for("sa.home_page"))
        return render_template("new_sa.html", form=form)

config.py

​​>
SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'sqlite:///app.sqlite')

这就是我所拥有的。 app.sqlite 已创建,但它是 0 字节。当我使用 new_sa() 函数提交内容时,出现上述错误。还有它是如何获得表名“s_amodel”的?

任何帮助将不胜感激。非常感谢!

【问题讨论】:

标签: python sqlite flask sqlalchemy orm


【解决方案1】:

您应该首先初始化/创建表。请阅读Creating the Database article in the official Flask documentation

这样的系统需要一个模式来告诉他们如何存储这些信息。因此,在第一次启动服务器之前,创建该架构很重要。

这是 Flask 使用模式 SQL 脚本创建数据库、表等的示例:

sqlite3 /tmp/flaskr.db < schema.sql

推荐的方法是在您的应用中使用db.create_all()。例如,参见:https://github.com/lily-mayfield/staticfuzz/blob/d2e54186f5639a06a5a796f0499a984ca8919ed7/staticfuzz.py#L403

【讨论】:

【解决方案2】:

在未正确创建 db 文件的相同情况下,帮助我的是从终端运行:

  1. 在终端输入命令:

    flask init-db

  2. 然后使用命令再次运行应用程序:

    flask run

这正确更新了示例 db 文件。

【讨论】:

    猜你喜欢
    • 2016-02-20
    • 2022-10-06
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 2022-01-21
    • 2021-07-24
    相关资源
    最近更新 更多