Как решить проблему sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: article?

Как решить проблему sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: article?
код

from flask import Flask, render_template, url_for, request, redirect
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///blog.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)


class Article(db.Model):
	id = db.Column(db.Integer, primary_key=True)
	title = db.Column(db.String(100), nullable=False)
	intro = db.Column(db.String(300), nullable=False)
	text = db.Column(db.Text, nullable=False)
	date = db.Column(db.DateTime, default=datetime.utcnow)

	def __repr__(self):
		return '<Article %r>' % self.id

@app.route("/")
@app.route("/home")
def index():
	return render_template("index.html")

@app.route("/posts")
def posts():
	articles = Article.query.order_by(Article.date).all()
	return render_template("posts.html", articles=articles)


@app.route("/create-article", methods=['POST', 'GET'])
def create_article():
	if request.method == "POST":
		title = request.form['title']
		intro = request.form['intro']
		text = request.form['text']

		article = Article(title=title, intro=intro, text=text)

		try:
			db.session.add(article)
			db.session.commit()
			return redirect("/")
		except:
			return "При добавлении статьи произошла ошибка"
	else:
		return render_template("create-article.html")






if __name__ == '__main__':
	app.run(debug=True)



ошибка

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: article
[SQL: SELECT article.id AS article_id, article.title AS article_title, article.intro AS article_intro, article.text AS article_text, article.date AS article_date
FROM article ORDER BY article.date]
  • Вопрос задан
  • 26 просмотров
Решения вопроса 1
Vindicar
@Vindicar
Ну так ты таблицу в БД не создал, только модель описал. Она автоматически не создаётся, для создания таблиц нужно вызывать отдельный метод db.create_all().
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы