在SQLAlchemy中的session.query中使用like运算符和request.args.get

时间:2017-10-28 23:49:28

标签: python ajax sqlalchemy request

我使用等于运算符使用以下查询成功地从数据库中获取结果:

return session.query(Employees).filter_by(EmployeeName=request.args.get('Name'))

员工就是班级

'名称'属性通过ajax调用填充

我不确定如何使用like运算符而不是等于?

我尝试过这样的事情,但无济于事

return session.query(Employees).filter(Employees.EmployeeName.like(request.args.get('%Name%')))

2 个答案:

答案 0 :(得分:1)

看起来request.args.get('Name')是您返回名称的方式。在这种情况下将%放在名称周围将从请求返回错误的(可能是空的)arg。相反,尝试使用结果格式化字符串:

return session.query(Employees).filter(Employees.EmployeeName.like("%{0}%".format(request.args.get('Name')))

答案 1 :(得分:1)

要获得简单'%' || expr || '%'比较的快捷方式,请使用ColumnOperators提供的contains()方法:

session.query(Employees).\
    filter(Employees.EmployeeName.contains(request.args.get('Name')))

请注意,可能的通配符不会被转义,因此如果名称包含它们,那么它们的行为就是这样。