[英]flask sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users
[英]flask/sqlalchemy - OperationalError: (sqlite3.OperationalError) no such table
我收到以下错误:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: s_amodel [SQL: 'INSERT INTO s_amodel
from flask_wtf import Form
class SAForm(Form):
from app.app_and_db import db
class SAmodel(db.Model):
id = db.Column(db.Integer(), primary_key=True)
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)
SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'sqlite:///app.sqlite')
这就是我所拥有的。 app.sqlite 已创建,但它是 0 字节。 当我使用 new_sa() 函数提交某些内容时,出现上述错误。 另外它是如何获得表名“s_amodel”的?
任何帮助将不胜感激。 非常感谢!
您应该首先初始化/创建表。 请阅读官方 Flask 文档中的创建数据库文章:
这样的系统需要一个模式来告诉他们如何存储这些信息。 因此,在第一次启动服务器之前,创建该架构很重要。
这是 Flask 使用模式 SQL 脚本创建数据库、表等的示例:
sqlite3 /tmp/flaskr.db < schema.sql
推荐的方法是在您的应用程序中使用db.create_all()
。 例如,参见: https : //github.com/lily-mayfield/staticfuzz/blob/d2e54186f5639a06a5a796f0499a984ca8919ed7/staticfuzz.py#L403
在未正确创建 db 文件的相同场景中帮助我的是从终端运行:
在终端输入命令:
flask init-db
然后使用命令再次运行应用程序:
flask run
这正确更新了示例数据库文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.