Flask-SQLAlchemy中具有startswith运算符的动态过滤器

问题描述 投票:0回答:1

我对动态提供的列和相应值进行了过滤查询。

from flask import request
filter_dict = {}
page = request.args.get('index', 1, type=int)
no_of_item = request.args.get('max', 10, type=int)
if request.args.get('first_name', type=int):
       filter_dict['first_name'] = request.args.get('first_name', type=str)
if request.args.get('city', type=int):
       filter_dict['city'] = request.args.get('city', type=str)
# Query
list_user_obj = User.query.filter_by(**filter_dict).paginate(page=page, per_page=no_of_item)

现在,我想查询所有以'jh'开头的城市和以'NY'为城市的名字。如何以更有效的方式构建查询?无论如何说filter_dict过滤first_name时只寻找以'jh'模式开头的代码。

python python-3.x sqlalchemy flask-sqlalchemy
1个回答
0
投票
我尝试过类似的方法。使用filter()代替filter_by()。它对我有用。

from flask import request filter_list= [] page = request.args.get('index', 1, type=int) no_of_item = request.args.get('max', 10, type=int) if request.args.get('first_name', type=int): filter_list.append(User.first_name.startswith(request.args.get('first_name', type=str)) if request.args.get('city', type=int): filter_list.append(User.city == request.args.get('city', type=str)) # Query list_user_obj = User.query.filter(*filter_list).paginate(page=page, per_page=no_of_item)

© www.soinside.com 2019 - 2024. All rights reserved.