我尝试创建一个数据库并将文章表放在 routes.py 的 /articles/
models.py
from files import db
from datetime import datetime
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False,unique=True)
article_content = db.Column(db.Text)
date = db.Column(db.DateTime,default=datetime.utcnow)
abstract = db.Column(db.String(150))
comments = db.relationship("Comment", backref="article", lazy = True)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_name = db.Column(db.String(30), unique=True, nullable=False)
password = db.Column(db.String(30), nullable=False)
comments = db.relationship("Comment", backref="user", lazy = True)
class Comment(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_comment = db.Column(db.String(200), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
article_id = db.Column(db.Integer, db.ForeignKey("article.id"))
init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SECRET_KEY'] = ''
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
from files import routes
routes.py
from files import app, db
from flask import render_template
from files.models import Article
from files.forms import RegisterForm, LoginForm
@app.route('/')
@app.route('/main')
@app.route('/home')
def home():
return render_template("home.html")
@app.route('/articles/<article_name>') # dynamic route
def article(article_name):
db.create_all()
article_ = Article(title = article_name, article_content = "article", abstract = "ndng")
db.session.add(article_)
db.session.commit()
return render_template("article.html", article_name=article_name)
@app.route('/articles')
def articles():
return render_template("articles.html")
@app.route('/register')
def register():
form = RegisterForm()
return render_template("register.html", form = form)
@app.route('/login')
def login():
form = LoginForm()
return render_template("login.html", form = form)
答案 0 :(得分:2)
我最近发现了同样的错误信息。这实际上是由于 SQLAlchemy 的升级,它作为flask-sqlalchemy 的依赖项安装。
您可以找到我在 stackoverflow 上针对问题 here 发布的问题:
问题通过卸载 SQLAlchemy==1.4.0 并安装以前版本的 SQLAlchemy==1.3.23 解决。
尝试这样做,看看是否有帮助。
答案 1 :(得分:2)
只需降级 SQLAlchemy 。 由于某种原因,最新版本不起作用
pip install 'SQLAlchemy<1.4.0'
答案 2 :(得分:0)
将 SQLAlchemy 降级到低于 1.4.0(在我的例子中是 1.3.8)可以解决问题。