2017-10-28 213 views
0

我能成功使用下面的查询使用等于运算符来从数据库中获取结果:使用像运营商session.query在SQLAlchemy中与request.args.get

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

员工是类

'Name'属性通过ajax调用填充

我不知道如何使用like运算符而不是等于?

我试图做这样的事情,但无济于事

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

回答

1

对于一个快捷方式简单'%' || expr || '%'比较使用由ColumnOperators提供的contains()方法:

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

注意通配符的字符不转义,因此如果名称包含它们,它们将表现如此。

1

它看起来像request.args.get('Name')是你返回名字的方式。在这种情况下将%置于名称附近将会从请求返回一个错误的(可能是空的)参数。相反,尝试格式化字符串的结果:

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

谢谢你的帮助,但那对我不起作用。 – LinuxUser

+0

我可以看到员工的模型对象吗?我可能会更好一些。 – bjdduck