如何在Flask-SQLAlchemy 3.0中实现原2.0版本的搜索查询?
在Flask-SQLAlchemy 3.0中实现搜索结果查询
Flask-SQLAlchemy 3.0核心调整是推荐用**会话(Session)**构建查询,但也保留了旧版模型.query的兼容性,以下是两种可行写法:
1. 兼容旧写法(无需大幅改动)
你的原有代码在3.0中依然可用,只需修正字符串拼接的语法错误(缺少加号):
search_results = Posts.query.filter(Posts.content.like('%' + post_searched_form + '%')).order_by(Posts.title).all()
2. 3.0推荐的Session写法
官方更建议通过db.session.query()构建查询,写法如下:
# 确保已初始化db实例 from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() # 构建搜索查询 search_pattern = f'%{post_searched_form}%' search_results = db.session.query(Posts).filter(Posts.content.like(search_pattern)).order_by(Posts.title).all()
更安全的写法(规避字符串拼接问题)
如果担心特殊字符引发的问题,可使用SQLAlchemy的func.concat拼接模糊匹配通配符:
from sqlalchemy import func search_results = db.session.query(Posts).filter( Posts.content.like(func.concat('%', post_searched_form, '%')) ).order_by(Posts.title).all()
内容的提问来源于stack exchange,提问作者efuiojreifh
相关产品推荐
相关产品推荐

