当我想在GAE上查询ndb时遇到了一些问题。
是否可以使用关键字参数查询数据库?
从文档中可以看出查询字符串应该是表达式。
Calendar
我可以通过
之类的关键字参数进行查询或过滤qry = Account.query(username == 'test_user')
如果没有,我如何将关键字参数传递到符合ndb条件的表达式中。
谢谢。
答案 0 :(得分:2)
这样的事情会让你的kwargs成为查询的过滤器:
def search_userinfo(**kwargs):
qry = UserInfo.query(*(getattr(UserInfo, k)==v for (k,v) in kwargs.items()))
return qry
答案 1 :(得分:0)
首先,查询应该在属性名称之前具有类名:
qry = Account.query(Account.username == 'test_user')
接下来,当==
使用**kwargs
运算符时,查询使用=
运算符,因此您必须自己编写查询:
def search_userinfo(self, **kwargs):
return UserInfo.query(UserInfo.username == kwargs['username'])
如果要查询属性列表,可以将它们链接在一起:
def search_userinfo(self, **kwargs):
qry = UserInfo.query()
if 'username' in kwargs:
qry = qry.filter(UserInfo.username == kwargs['username'])
if 'other' in kwargs:
qry = qry.filter(UserInfo.other == kwargs['other'])
...
return qry
有关详细信息,请参阅NDB Query Class。