执行db.session.commit()

时间:2019-06-25 06:59:13

标签: python postgresql flask flask-sqlalchemy

我正在将PostgreSQL与sqlalchemy一起使用。因此,我有一个flask应用程序,它可以创建和更新实验室,但是每次执行db.session.commit()时,要更新的数据都会被推送到列表的末尾。例如,假设我将实验室订购为

  • 1。电路实验室
  • 2。泡泡机实验室
  • 3。 LED Lab

    然后,我想将Circuits的实验室标题编辑为Circuits 101 Lab。在db.session.commit()之后,顺序变为

  • 1。泡泡机实验室
  • 2。 LED实验室
  • 3。电路101


    这不是我想要的,不应该将Circuits 101放在列表的顶部,而不应该推到最后。

    到目前为止我尝试过的是:

    我试图通过Google搜索此问题,并且堆栈溢出,但找不到与此类似的帖子。我什至尝试在python控制台中运行更改,然后提交更改以查看订单是否更改,并且订单仍然更改。

    例如:

    labs = Lab.query.all()  # Gets the list of all labs
    lab = labs[0]  # get the first element
    lab.title = "Circuits 202"  # Change title
    db.session.commit()  # commit the changes
    

    提交后顺序仍然更改

    这是我下面的代码。提交后,更新的项目似乎被推到了最后。

    # Update route
    @labs.route('/labs/<int:lab_id>/update', methods=['GET', 'POST'])
    def lab_update(lab_id):
        lab = Lab.query.get_or_404(lab_id)
        form = LabForm()
        if form.validate_on_submit():
            lab.title = form.title.data
            lab.time = form.time.data
            lab.summary = form.summary.data
            db.session.commit()
            flash('Your Subject has been updated!', 'success')
            return redirect(url_for('labs.lab_show', lab_id=lab.id))
        elif request.method == 'GET':
            form.title.data = lab.title
            form.time.data = lab.time
            form.summary.data = lab.summary
    
        return render_template("views_lab/lab_update.html", title='Update Lab', form=form)
    
    
    

    我希望数据在编辑时会保留在同一位置,但会被推送到末尾。

  • 0 个答案:

    没有答案