Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python删除App Engine数据存储中的非类型对象?_Python_Google App Engine_Gql - Fatal编程技术网

如何使用Python删除App Engine数据存储中的非类型对象?

如何使用Python删除App Engine数据存储中的非类型对象?,python,google-app-engine,gql,Python,Google App Engine,Gql,我的输出是我输入的所有值和一个值:“None”,它是非类型对象中的一个。我想删除这个实体。当我尝试此代码时: qObj = Group.all().fetch(Group.all().count()) for g in qObj: self.response.out.write(g.group) 我得到一个错误:“BadArgumentError”。 问题是,如果我很可能没有添加此实体,为什么我的数据存储中会有此实体。如何删除此实体?返回None实际上并不代表数据库中的实体;这意味着您的

我的输出是我输入的所有值和一个值:“None”,它是非类型对象中的一个。我想删除这个实体。当我尝试此代码时:

qObj = Group.all().fetch(Group.all().count())
for g in qObj:
   self.response.out.write(g.group)
我得到一个错误:“BadArgumentError”。
问题是,如果我很可能没有添加此实体,为什么我的数据存储中会有此实体。如何删除此实体?

返回None实际上并不代表数据库中的实体;这意味着您的查询没有返回任何结果。因此,不需要从数据库中删除任何内容

在没有其他事情的情况下,我大胆猜测您的数据存储实际上并不包含您认为存在的任何类型的实体


顺便说一句,您的初始查询
qObj=Group.all().fetch(Group.all().count())
效率极低,因为它将两次检索所有
Group
实体。
count()。更可取的做法是以编程方式维护计数器。

返回None实际上并不表示数据库中的实体;这意味着您的查询没有返回任何结果。因此,不需要从数据库中删除任何内容

在没有其他事情的情况下,我大胆猜测您的数据存储实际上并不包含您认为存在的任何类型的实体


顺便说一句,您的初始查询
qObj=Group.all().fetch(Group.all().count())
效率极低,因为它将两次检索所有
Group
实体。
count()。更可取的做法是以编程方式维护计数器。

如果不在完整上下文中查看代码,很难判断,但假设您的删除操作在迭代器中,问题实际上就在以下语句中:

qResult = Group.gql( 'WHERE group=:1', g).get()
db.delete(qResult)
变量“g”是组实体/对象,因此不适合作为字符串属性“Group”的筛选器,因此不会返回结果。这将有助于:

qResult = Group.gql( 'WHERE group=:1', g).get()
但实际上并不需要单独查询该实体(同样,假设您正在对初始结果集进行迭代)。您可以直接删除它:

qResult = Group.gql( 'WHERE __key__=:1', g.key()).get()
您可能需要重新考虑重命名实体属性,因为这可能会混淆问题。也许是这样的:

g.delete()

如果不在完整的上下文中查看您的代码,很难判断,但是假设您的删除操作在迭代器中,那么问题实际上在以下语句中:

qResult = Group.gql( 'WHERE group=:1', g).get()
db.delete(qResult)
变量“g”是组实体/对象,因此不适合作为字符串属性“Group”的筛选器,因此不会返回结果。这将有助于:

qResult = Group.gql( 'WHERE group=:1', g).get()
但实际上并不需要单独查询该实体(同样,假设您正在对初始结果集进行迭代)。您可以直接删除它:

qResult = Group.gql( 'WHERE __key__=:1', g.key()).get()
您可能需要重新考虑重命名实体属性,因为这可能会混淆问题。也许是这样的:

g.delete()

Quote“这意味着您的查询没有返回任何结果”。我得到了一些结果(我之前提到过),最后一个是非类型对象。为什么这个“Group.all()”在末尾返回额外的非类型对象?实际上,返回值不是None;其中一个返回值的
.group
属性为None。我猜问题的根源在于凯文·P的建议。不过,感谢您在第一行中指出反模式的问题。引用“这意味着您的查询没有返回任何结果”。我得到了一些结果(我之前提到过),最后一个是非类型对象。为什么这个“Group.all()”在末尾返回额外的非类型对象?实际上,返回值不是None;其中一个返回值的
.group
属性为None。我猜问题的根源在于凯文·P的建议。不过,谢谢你在第一行中提出反模式的观点。