Есть ли способ обновить несколько объектов с помощью облачной консоли Google? - PullRequest
0 голосов
/ 29 апреля 2020

В облачной консоли Google я могу использовать «Datastore> Entities» для обновления одной сущности за один раз или делать SELECT запросов с использованием GQL.

Мне нужно обновить несколько сущностей, и это будет нецелесообразно сделать это один за другим. Есть ли способ сделать запрос на обновление или что-то похожее на «Интерактивную консоль», которая существует на «сервере администратора», когда я запускаю свой проект на локальном сервере GAE?

РЕДАКТИРОВАТЬ: просто для пояснения, я хочу сделать это без необходимости развертывания нового кода на моем производственном сервере.

Ответы [ 2 ]

1 голос
/ 02 мая 2020

Как отметил Серджио Франко, можно использовать облачные функции для доступа к хранилищу данных и обновления сущностей. Все еще необходимо развернуть функцию, но, поскольку все это можно сделать из консоли, это значительно проще и быстрее, чем добавлять новый код в проект и развертывать весь проект.

Важно помнить, что вы ' Будет оцениваться каждый раз, когда выполняется функция, независимо от ее размера. Подробнее здесь

google cloud console menu showing Cloud Functions

  • Выберите «Создать функцию»
  • Дайте функции описательное имя (это будет легче чтобы узнать, что он делает позже)
  • Выберите 128 МБ (плата будет взиматься в зависимости от распределения памяти)
  • Выберите HTTP в качестве триггера
  • Поскольку целью этой функции является Чтобы обновить хранилище данных, я думаю, что лучше оставить галочку «Разрешить неаутентифицированные вызовы»
  • Выберите «встроенный редактор»
  • Выберите Python 3.7 в качестве среды выполнения (так как примеры ниже будут в Python)
  • Добавьте приведенный ниже код на вкладке «needs.txt»:
# Function dependencies, for example:
# package>=version
google-cloud-datastore==1.8.0
  • вкладка main.py:
from io import StringIO
from google.cloud import datastore
datastore_client = datastore.Client()

def update_books(request):
    buffer = StringIO()
    query = datastore_client.query(kind='Book')
    query.add_filter('author', '=', 'Terry Pratchett')

    data = query.fetch()

    for book in data:
        book['rating'] = '5 stars'
        client.put(book)
        buffer.write('Updated book {}'.format(book['title']))

    return buffer.getvalue()
  • Нажмите «Переменные среды, сеть и многое другое»
  • В сети выберите «Разрешить внутренний трафик» c только "
  • Нажмите" Создать "
  • Дождитесь развертывания функции
  • Go на вкладке" Тестирование "
  • Нажмите" Тестовая функция "

Все, что возвращается функцией, будет напечатано в разделе" Вывод "страницы.

Все, что вызвано print, будет отправлено в журналы

Вы можете получить доступ ко всем свойствам сущностей, как если бы это был дикт.

Источники:

облачные функции python для доступа к хранилищу данных

https://googleapis.dev/python/datastore/latest/entities.html

https://cloud.google.com/functions/docs/quickstart-python

1 голос
/ 01 мая 2020

Я посмотрел документацию и похоже, что единственный способ выполнить запросы на обновление - это использовать любой из Java или Python, я рассмотрел варианты, доступные для управления хранилищем данных gcloud и нет возможности запускать GQL-запросы.

Таким образом, для достижения вашей цели можно создать простое приложение на облачных функциях, которое выполняет запросы GQL, переданные в параметр.

...