flask / sqlalchemy - OperationalError:(sqlite3.OperationalError)没有这样的表

时间:2015-05-18 19:17:44

标签: python sqlite flask sqlalchemy

我收到以下错误 sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)没有这样的表: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"?

非常感谢任何帮助。非常感谢!

2 个答案:

答案 0 :(得分:5)

你应该首先初始化/创建表。请阅读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

答案 1 :(得分:0)

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

  1. 在终端类型命令中:

    TblStaff.SchoolEmailAddress AS AsstHoYEmail

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

    TblPupilManagementPupils.txtSchoolID

这正确地更新了示例数据库文件。