如何在python中使用NDB查询从数据存储中删除数据?

2024-06-28 19:38:37 发布

您现在位置: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从数据存储中删除特定的记录。我的代码是这样的:

^{pr2}$

但它不能正常工作,我是python新手。在


Tags: 数据namefromidtypesitephoneaccount
1条回答
网友
1楼 · 发布于 2024-06-28 19:38:37

好吧,你没有正确地“建造”钥匙。应该使用实体类型及其ID/名称(如果您知道的话)来构建密钥。来自Specifying your own key name

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值,看起来像数据存储auto-generated numeric key ID

    "nid": 6102564412063744

如果是这样,那么nid实际上是您的密钥ID,因此您将按如下方式构建密钥:

ndb.Key(Account, nid)

您还可以使用:

^{pr2}$

但如果您实际拥有实体,例如从查询结果来看,您不再需要构建其key来执行删除操作,您可以直接从实体中获取key,然后按如下方式删除它:

for entity in ndb.query(...).fetch(...):
    entity.key.delete()

如果要删除多个实体,则使用ndb.delete_multi()更有效,请参见Deleting entities in bulk。在

相关问题 更多 >