Flask 新手查询 sqlite3.OperationalError
Flask Newbie Query sqlite3.OperationalError
我是新手,试图通过创建一个简单的待办事项应用程序来学习 Flask,因为它位于 python 代码下方
我很想执行,但是当我 运行 我得到 sqlite3.OperationalError: no such column: todo.task
我不确定我在这里遗漏了什么,请协助
import os
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
project_dir = os.path.dirname(os.path.abspath(__file__))
# sqlite: // / prefix to tell SQLAlchemy which database engine we're using.
database_file = "sqlite:///{}".format(
os.path.join(project_dir, "mydatabase.db"))
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = database_file
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True)
task = db.Column(db.String(100))
@app.route('/', methods=["GET", "POST"])
def samplehome():
todo_list = Todo.query.all()
print(todo_list)
return render_template("index.html", todo_list=todo_list)
# if request.form:
# print(request.form)
# submitted = Todo(id=request.form.get("id"),task=request.form.get("task"))
# try:
# db.session.add(submitted)
# db.session.commit()
# except Exception as e:
# print(e)
# db.session.rollback()
if __name__ == "__main__":
db.create_all()
app.run(host='0.0.0.0', debug=True)
我认为问题是您没有在 db.create_all() 函数之后提交更改。你可以这样试试
if __name__ == "__main__":
db.create_all()
db.session.commit()
app.run(host='0.0.0.0', debug=True)
有个类似的问题:SQLAlchemy create_all() does not create tables
除了你的问题,我不直接建议 return 你的数据库 class。您可以查看 MVC 设计模式。
我是新手,试图通过创建一个简单的待办事项应用程序来学习 Flask,因为它位于 python 代码下方
我很想执行,但是当我 运行 我得到 sqlite3.OperationalError: no such column: todo.task
我不确定我在这里遗漏了什么,请协助
import os
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
project_dir = os.path.dirname(os.path.abspath(__file__))
# sqlite: // / prefix to tell SQLAlchemy which database engine we're using.
database_file = "sqlite:///{}".format(
os.path.join(project_dir, "mydatabase.db"))
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = database_file
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
class Todo(db.Model):
id = db.Column(db.Integer, primary_key=True)
task = db.Column(db.String(100))
@app.route('/', methods=["GET", "POST"])
def samplehome():
todo_list = Todo.query.all()
print(todo_list)
return render_template("index.html", todo_list=todo_list)
# if request.form:
# print(request.form)
# submitted = Todo(id=request.form.get("id"),task=request.form.get("task"))
# try:
# db.session.add(submitted)
# db.session.commit()
# except Exception as e:
# print(e)
# db.session.rollback()
if __name__ == "__main__":
db.create_all()
app.run(host='0.0.0.0', debug=True)
我认为问题是您没有在 db.create_all() 函数之后提交更改。你可以这样试试
if __name__ == "__main__":
db.create_all()
db.session.commit()
app.run(host='0.0.0.0', debug=True)
有个类似的问题:SQLAlchemy create_all() does not create tables
除了你的问题,我不直接建议 return 你的数据库 class。您可以查看 MVC 设计模式。