Python 如何更新表以适应新列?
我通过添加“post_id”列来编辑我的表,以定义帖子和回复之间的关系(我正在尝试向我的flask应用程序添加注释)。因此,现在每当我运行我的站点时,我都会遇到错误: sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)表reply没有名为post_id的列[SQL:“插入到reply(标题、发布日期、内容、用户id、post_id)值(?,,,,,,,,,,?)”[参数:('testtitle',2020-12-15 04:52:48.159734','testcontent',5,无] 因此,我尝试通过插入以下行来更新它:Python 如何更新表以适应新列?,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,我通过添加“post_id”列来编辑我的表,以定义帖子和回复之间的关系(我正在尝试向我的flask应用程序添加注释)。因此,现在每当我运行我的站点时,我都会遇到错误: sqlalchemy.exc.OperationalError:(sqlite3.OperationalError)表reply没有名为post_id的列[SQL:“插入到reply(标题、发布日期、内容、用户id、post_id)值(?,,,,,,,,,,?)”[参数:('testtitle',2020-12-15 04:52:
reply.__table__.update(reply)
但是我得到了错误
sqlalchemy.exc.ArgumentError:应为SQL表达式对象或字符串,但获取了类型为的对象
我的代码供参考(请告诉我是否有任何问题,我对flask和SQLalchemy非常陌生):
routes.py
@app.route("/post/reply", methods=['GET', 'POST'])
@login_required
def new_reply():
form = ReplyForm()
if form.validate_on_submit():
reply = Reply(title=form.title.data, content=form.content.data, author=current_user,)
db.session.add(reply)
db.session.commit()
flash('reply posted', 'success')
return redirect(url_for('home'))
return render_template('Reply.html', title='New Reply', form=form, legend='New Reply',)
添加新列后,需要添加迁移。迁移是将代码更改应用于数据库的过程。在烧瓶中,如果为烧瓶包装,则为一个漂亮的包装。您可以将其配置为:
migrate.init_应用程序(应用程序,数据库)
配置flask后,命令为:
$ flask db init # first time
$ flask db migrate
$ flask db upgrade
试试这个包 我建议您在类对象中定义表名。。。显式比隐式好。使用
\uuuu tablename\uuuu='my\u table'
$ flask db init # first time
$ flask db migrate
$ flask db upgrade