Я пытаюсь создать простую базу данных, чтобы принимать имя и обратную связь от пользователя, используя SQLAlchemy и Flask. Сайт работает нормально, если у меня есть только «обратная связь» в моем файле db_models.py. Однако, если я добавлю поле «имя», произойдет ошибка. Я понятия не имею, что происходит, так как я раньше не работал с базами данных. Любая помощь будет оценена.
Вот мой init .py file-
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SECRET_KEY'] = 'anjh23op94q2pm5h'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
from vedicm import routes
<---->
Вот маршруты .py
from flask import render_template, url_for, flash, redirect
from vedicm import app, db
from vedicm.forms import FeedbackForm
from vedicm.db_models import FB
@app.route("/", methods=['GET', 'POST'])
def home():
form = FeedbackForm() #A wt form in Flask
if form.validate_on_submit():
fb = FB(feedback = form.feedback.data, name = form.name.data)
db.session.add(fb)
db.session.commit() #Here, all the problem occurs
flash(f'Feedback Submitted', 'success')
return render_template("home.html", form=form, title = 'Vedic Mishra')
@app.route("/feedbacks", methods=['GET', 'POST'])
def feedbacks():
fbs = FB.query.all()
return render_template("feedbacks.html", title='Feedbacks', feedbacks = fbs)
<---->
Вот Forms.py
from vedicm import db
class FB(db.Model):
id = db.Column(db.Integer, primary_key=True)
feedback = db.Column(db.String(100), nullable=False)
name = db.Column(db.String(25))
def __repr__(self):
return f"FB('{self.feedback}', '{self.name}')"
<---->
I запустить это приложение с помощью run.py, я получаю следующую ошибку.
**sqlalchemy.exc.OperationalError**
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table FB has no column named name
[SQL: INSERT INTO "FB" (feedback, name) VALUES (?, ?)]
[parameters: ('Vedic', 'Vedic')]
(Background on this error at: http://sqlalche.me/e/e3q8)