如何从Google App Engine Datastore中删除实体?

5

我在Google App Engine数据存储中创建了一个实体。

我该如何删除这个实体?

4个回答

4
您没有指定使用哪个API。
在Python中,操作方式如下: 参考链接
db.delete(modelId)

在Java中,应该像这样做(我没有测试过):链接
PersistenceManager pm = PMF.get().getPersistenceManager();

MyModel entity = pm.getObjectById(MyModel.class, modelId);
pm.deletePersistent(entity);

pm.close();

2
Python示例不正确 - 'key'是保留字段名称,因此不能用作属性。它应该过滤另一个属性或使用MyModel.get按键获取。在前一种情况下,批量删除(例如db.delete(MyModel.all()。fetch(500)))效率更高。 - Nick Johnson
这个Java示例展示了如何使用JDO从实体(或Google Talk中的Kind)中删除单个对象,而不是如何删除实体。实际上,它通过id(modelId)获取特定对象,然后将其删除。无论如何,要删除一个Kind,您必须删除其中的所有数据。 - stivlo

3

在Python中,如果你知道键值,它就非常简单:

db.delete(key)

0
此外,您还可以尝试类似以下的内容(Python 伪代码):
class MyClass(ndb.Model):
    myString = ndb.StringProperty(indexed=false)

def deleteAllEntities():
    entities = MyClass.query()
    for entity in entities:
        entity.key.delete()

诚然,有更好的方法来进行批量删除,但如果您遇到麻烦,这是一种可以使用的方法。

更多信息请参见:https://cloud.google.com/appengine/docs/python/datastore/entities#Python_Deleting_an_entity


0

我假设您有一个端点:

Somethingendpoint endpoint = CloudEndpointUtils.updateBuilder(endpointBuilder).build();

然后:

endpoint.remove<ModelName>(long ID); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接