Python 2.7 使用数组在查询中执行NDB

Python 2.7 使用数组在查询中执行NDB,python-2.7,google-cloud-datastore,app-engine-ndb,Python 2.7,Google Cloud Datastore,App Engine Ndb,我试图执行一个查询,直觉上我会这样写: Project.query(Project.project_id IN ("abc","def")).fetch() 我了解到,在NDB中,您可以这样做: Project.query(ndb.OR(Project.project_id == "abc", Project.project_id == "def")).fetch() 我一般都同意,即使读起来有点难。虽然(对于像我这样的新手)我不明白为什么解释器不能为你做艰苦的工作,并接受/解析一个IN到一

我试图执行一个查询,直觉上我会这样写:

Project.query(Project.project_id IN ("abc","def")).fetch()
我了解到,在NDB中,您可以这样做:

Project.query(ndb.OR(Project.project_id == "abc", Project.project_id == "def")).fetch()
我一般都同意,即使读起来有点难。虽然(对于像我这样的新手)我不明白为什么解释器不能为你做艰苦的工作,并接受/解析一个IN到一个OR==的嵌套中。。。但这是另一个问题

问题是我的可接受项目id值列表——在本例中为“abc”、“def”——是动态的。有了IN,我就可以把我的头绕到列表中的东西上。有了这些多个ORs,我想我可以迭代我的列表并写出链式语句——但那将是一个字符串,因此我怀疑ndb不会将其解析为有效的查询,而且感觉非常不雅

这里的规范方法是什么?

有以下示例:

query=Article.query(Article.tags.IN(['python','ruby','php']))

这表明你应该能够做到:

dynamic_list = ['abc','def','ghi']
Project.query(Project.project_id.IN(dynamic_list))

知道了!我以为医生说你必须用第二种方式写。如果第一种(更传统的)风格行得通的话(它确实行),我更喜欢它。