我在Google App Engine中遇到云数据存储问题。
我在数据库中有2个模型:
class Product(ndb.Model):
name = StringProperty(required=True)
category = KeyProperty(kind=Category)
description = TextProperty(required=True)
price = IntegerProperty(required=True)
和
class Category(ndb.Model):
name=StringProperty(required=True)
那么如何才能从Product Class中获取属于某个类别的所有数据?
在我使用的关系SQL中:
SELECT * FROM Product WHERE category = 'CertainName';
谢谢!
答案 0 :(得分:1)
以下内容应该执行sql查询正在执行的操作:
query = Product.query(Product.category == "CertainName") # Note the "=="
编辑:
我刚刚意识到你需要按键过滤(谢谢@mgilson)。查询稍有变化。基本上你只需要先得到你的category_entity,然后像这样应用过滤器:
query = Product.query(Product.category == category_entity.key)
例如,您可以获取如下所示的category_entity:
category_entity = Category.query(Category.name == "SomeCat").fetch()
有关详细信息,请参阅https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/appengine/standard/ndb/queries/snippets.py(查看query_purchases_for_customer_via_key)
答案 1 :(得分:0)
您可以根据“名称”字段在类别类别中生成自己的密钥并使用它:
1)生成新的类别实体时
2)当您需要针对特定类别查询产品时。
因此,在分类实体拥有您可以随时生成的密钥之后,您可以说:
category_key = Category.create_key(name ='CertainName')
query = Product.query(Product.category == category_key)