Удалить записи из Google Datastore, используя простой GQL - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть Google DataStore, который я унаследовал, и в этом Datastore хранится около 9 миллионов записей.Я хотел бы удалить все старые записи (скажем, все, что старше 1 месяца).Вообще говоря, когда я пользуюсь консолью Google Cloud Datastore-> query by kind, я могу поместить SQL-подобные операторы:

select * from table limit 5

, однако, когда я пытаюсь использовать «query by gql», чтобы сделать что-то вродеудалить строки:

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

Это не работает - я получаю сообщение об ошибке: «Ошибка запроса GQL: обнаружен« удалить »в строке 1, столбец 1. Ожидалось:« выбрать »...»

Есть ли простой способ запустить удаление всех старых записей?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Простой способ - написать скрипт и запускать его всякий раз, когда вам нужно.

Код (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)

Надеюсь, что это ответ на ваш вопрос !!!

0 голосов
/ 18 февраля 2019

Вы не можете использовать GQL для удаления.Если вы хотите удалить, вы должны использовать одну из клиентских библиотек .

...