检查Google App Engine数据存储区实体是否具有特定属性

Abh*_*Das 3 python database google-app-engine gql google-cloud-datastore

我是使用Google App Engine开发Web应用程序的新手.

我想检查数据存储区中为list属性(db.ListProperty)设置空值的实体.但是,当我尝试检查任何针对entity.listGAE的内容时都会出现错误:

'super' object has no attribute 'list'.

在一些搜索之后,我在这个SO问题中看到,为GAE数据存储区实体的列表属性设置空值等同于根本不设置该属性.这解释了我的错误.

所以我需要匹配数据存储区中根本没有任何list属性集的实体.查看GAE文档,我仍然没有找到任何允许我检查实体是否具有特定属性集的方法.

注意:我不必使用GQL执行此操作.我可以用GQL检索所有实体,然后用python检查.但是GQL解决方案也没问题.

dra*_*onx 14

我可以想到三种解决方法.

您可能遇到这种情况,因为最初您的模型没有"list"属性,并且您稍后添加了一个属性,因此您可能在数据存储区中没有"list"属性的旧实例.您可以编写一个遍历数据存储区的mapreduce函数,并确保所有实体都具有"list"元素.

否则,您可以使用python hasattr函数

if hasattr(entity, 'list'):
    a = entity.list[0] # or whatever operation you want
Run Code Online (Sandbox Code Playgroud)

第三,您可以使用异常处理程序来捕获错误情况.