![](/img/trans.png)
[英]How to make query of AND & OR operation from list of elements we we to search in ndb datastore using python in Google App Engine
[英]How to delete data from datastore using NDB query in python?
我有这样的数据:
{
"queryValue": "SELECT Name, Site, Phone, Type, Owner.Name, CreatedBy.profile.Name FROM Account",
"SFDCUser_id": "0056F00000ALw6aQAD",
"updated_at": "2018-11-18T07:26:24.954000",
"id": "aghkZXZ-Tm9uZXIZCxIMUXVlcnlIaXN0b3J5GICAgICAyOsKDA",
"is_error": false,
"nid": 6102564412063744,
"date": "2018-11-18T07:26:24.954000",
"created_at": "2018-11-18T07:26:24.954000"
}
我正在使用id从数据存储中删除特定记录。 我的代码是这样的:
ndb.Key('id',id).delete()
但它不正常,我是python的新手。
好吧,你没有正确地“建立”钥匙。 应使用实体种类及其ID /名称(如果您知道的话)构建密钥。 从指定您自己的密钥名称 :
account.key = ndb.Key('Account', 'sandy@example.com') # You can also use the model class object itself, rather than its name, # to specify the entity's kind: account.key = ndb.Key(Account, 'sandy@example.com')
但该示例假定在创建实体时, 'sandy@example.com'
被指定为密钥的ID /名称。
您显示的实体似乎属于Account
类型(或者至少是您查询的内容),而不是id
类型。 因此,您应该像引用的示例一样构建您的密钥(它们的实体类型也被命名为Account
)。
此外,似乎没有为您的实体使用指定的实体ID:
实体的id
值看起来像一个密钥的urlsafe
字符串:
"id": "aghkZXZ-Tm9uZXIZCxIMUXVlcnlIaXN0b3J5GICAgICAyOsKDA"
有一个nid
值,看起来像数据存储区自动生成的数字键ID :
"nid": 6102564412063744
如果是这样,那么nid
实际上是你的密钥ID,所以你要像这样构建你的密钥:
ndb.Key(Account, nid)
你也可以使用:
ndb.Key(urlsafe=id)
但是,如果您实际拥有该实体,例如,从查询结果中,您不再需要构建其密钥来执行删除,您可以直接从实体获取密钥并将其删除如下:
for entity in ndb.query(...).fetch(...):
entity.key.delete()
如果要删除多个实体,则使用ndb.delete_multi()
更有效,请参阅批量删除实体 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.