使用简单的GQL从Google数据存储中删除记录

时间:2019-02-18 12:33:57

标签: google-app-engine google-cloud-datastore gql

我有一个继承的Google DataStore 该数据存储区大约有900万条记录。 我想删除所有旧记录(例如所有早于1个月的记录)。 一般来说,当我使用Google Cloud Console Datastore->按种类查询时,我能够放入类似SQL的语句:

select * from table limit 5

但是,当我尝试使用“ gql查询”来执行类似删除行的操作时:

delete from table where date<"2019-01-01" 

它不起作用-我收到错误:“ GQL查询错误:在第1行第1列遇到“删除”。期望:“选择” ... “

是否有一种简单的方法可以对所有旧记录执行删除操作?

3 个答案:

答案 0 :(得分:0)

您不能使用GQL删除。如果要删除,则应使用客户端libraries之一。

答案 1 :(得分:0)

一种简单的方法是编写脚本并在需要时运行它。

代码(Python 2.7):

from google.appengine.ext import ndb
from datetime import date

kind = ModelX  #kind whose entries you want to delete
check = date(2019,1,1)   # Date to be used to check records 

# GQL Query to fetch keys of all older records
all_keys = kind.gql("WHERE date <= :1",check).fetch(keys_only = True)

# Deleting all entries at once
ndb.delete_multi(all_keys)

希望这能回答您的问题!

答案 2 :(得分:0)

您不能使用 GQL 删除实体。

您可以使用 UI 删除按钮或使用 datastore.delete() 方法手动删除实体