Python 使用SQLAlchemy和Flask时如何优化记录更新

Python 使用SQLAlchemy和Flask时如何优化记录更新,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我将SQLAlchemy与Flask和Flask SQLAlchemy扩展一起使用。我所困惑的是如何优化记录的更新。作为概念证明,我编写了以下端点: @bp.route('/books', methods=['GET', 'PUT'], endpoint="books_index") @bp.route('/books/<book_id>', methods=['GET', 'POST'], endpoint="books_show") def books_index(book_id

我将SQLAlchemy与Flask和Flask SQLAlchemy扩展一起使用。我所困惑的是如何优化记录的更新。作为概念证明,我编写了以下端点:

@bp.route('/books', methods=['GET', 'PUT'], endpoint="books_index")
@bp.route('/books/<book_id>', methods=['GET', 'POST'], endpoint="books_show")
def books_index(book_id=None):
    book = Book.query.get_or_404(book_id) if book_id else Book()
    form = Book.model_form(request.form, book if book_id else None)
    verb = "updated" if book_id else "created"

    if form.validate_on_submit():
        form.populate_obj(book)
        db.session.add(book)
        db.session.commit()
        flash('Book %s successfully' % verb, 'info')

    return dict(
        books=[] if book_id else Book.query.all(), 
        book=book, 
        form=form
    )
一切按我所希望的方式运行,但在更新现有图书记录时,SQLAlchemy会运行三个查询,它们是:

从book WHERE book.id=?中选择book.id作为book\u id,book.title作为book\u title? 更新图书集标题=?其中book.id=? 从book WHERE book.id=?中选择book.id作为book\u id,book.title作为book\u title? 我理解为什么SQLAlchemy会进行所有三个查询,但对于简单地更新一条记录来说似乎有点过分。有没有办法优化这里发生的查询量

请注意,我在端点上做了一些包装,以便根据约定渲染模板,这就是为什么您看不到render_模板的原因