使用简单的GQL从Google Datastore中删除记录

问题描述 投票:0回答:2

我有一个我继承的Google DataStore,这个数据存储区有大约9M的记录。我想删除所有旧记录(比如1个月以前的所有记录)。一般来说,当我使用谷歌云控制台数据存储 - >按类查询时,我可以将SQL语句放入:

select * from table limit 5

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

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

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

是否有一种简单的方法可以在所有旧记录上运行删除?

google-app-engine google-cloud-datastore gql
2个回答
0
投票

您无法使用GQL删除。如果你想删除你应该使用客户端libraries之一。


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)

希望这能回答你的问题!!!

© www.soinside.com 2019 - 2024. All rights reserved.