Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更新表以适应新列?_Python_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 如何更新表以适应新列?

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:

我通过添加“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,无]

因此,我尝试通过插入以下行来更新它:

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