有没有办法使用 google 云控制台更新多个实体?
Is there a way to update several entities using the google cloud console?
在 google 云控制台中,我可以使用 "Datastore > Entities" 一次更新一个实体,或者使用 GQL 进行 SELECT
查询。
我需要更新几个实体,一个一个地更新是不切实际的。当我 运行 我在本地 GAE 服务器中的项目时,有没有办法进行更新查询或类似于 "admin server" 中存在的 "Interactive console" 的查询?
编辑:澄清一下,我想这样做而不需要在我的生产服务器中部署新代码。
我查看了文档,看起来执行更新查询的唯一方法是使用任何 Java or Python, I’ve reviewed the options available to manage Datastore by gcloud,并且没有 运行 GQL 查询的选项。
因此,实现您的目标的一个选择是在 Cloud Functions 上创建一个简单的应用程序,该应用程序执行给定参数的 GQL 查询。
正如 sergio franco 所指出的,可以使用 Cloud Functions 访问数据存储并更新实体。它仍然需要部署该功能,但由于它可以从控制台完成,因此它比向项目添加新代码并部署整个项目要简单和快速得多。
请务必记住,无论函数的大小如何,每次执行函数时您都需要付费。更多详情 here
- 从左侧菜单转到 google cloud console 和 select "Cloud Functions",它在“计算”部分:
- 选择"Create Function"
- 给函数起一个描述性的名字(以后会更容易知道它做了什么)
- 选择128Mb(根据内存分配情况收费)
- 选择 HTTP 作为触发器
- 由于此功能的目的是更新数据存储,我认为最好不要选中 "Allow unauthenticated invocations"
- 选择"inline editor"
- 选择 Python 3.7 作为运行时(因为下面的示例将在 Python 中)
- 在 "requirements.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()
- 点击"Environment Variables, Network and More"
- 在网络中,选择 "Allow internal traffic only"
- 按"Create"
- 等待函数部署
- 转到 "Testing" 选项卡
- 按"Test Function"
函数返回的任何内容都将打印在页面的 "Output" 部分。
任何使用 print
调用的内容都会被发送到日志中
您可以像访问字典一样访问所有实体属性。
来源:
cloud functions python to access Datastore
https://googleapis.dev/python/datastore/latest/entities.html
在 google 云控制台中,我可以使用 "Datastore > Entities" 一次更新一个实体,或者使用 GQL 进行 SELECT
查询。
我需要更新几个实体,一个一个地更新是不切实际的。当我 运行 我在本地 GAE 服务器中的项目时,有没有办法进行更新查询或类似于 "admin server" 中存在的 "Interactive console" 的查询?
编辑:澄清一下,我想这样做而不需要在我的生产服务器中部署新代码。
我查看了文档,看起来执行更新查询的唯一方法是使用任何 Java or Python, I’ve reviewed the options available to manage Datastore by gcloud,并且没有 运行 GQL 查询的选项。
因此,实现您的目标的一个选择是在 Cloud Functions 上创建一个简单的应用程序,该应用程序执行给定参数的 GQL 查询。
正如 sergio franco 所指出的,可以使用 Cloud Functions 访问数据存储并更新实体。它仍然需要部署该功能,但由于它可以从控制台完成,因此它比向项目添加新代码并部署整个项目要简单和快速得多。
请务必记住,无论函数的大小如何,每次执行函数时您都需要付费。更多详情 here
- 从左侧菜单转到 google cloud console 和 select "Cloud Functions",它在“计算”部分:
- 选择"Create Function"
- 给函数起一个描述性的名字(以后会更容易知道它做了什么)
- 选择128Mb(根据内存分配情况收费)
- 选择 HTTP 作为触发器
- 由于此功能的目的是更新数据存储,我认为最好不要选中 "Allow unauthenticated invocations"
- 选择"inline editor"
- 选择 Python 3.7 作为运行时(因为下面的示例将在 Python 中)
- 在 "requirements.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()
- 点击"Environment Variables, Network and More"
- 在网络中,选择 "Allow internal traffic only"
- 按"Create"
- 等待函数部署
- 转到 "Testing" 选项卡
- 按"Test Function"
函数返回的任何内容都将打印在页面的 "Output" 部分。
任何使用 print
调用的内容都会被发送到日志中
您可以像访问字典一样访问所有实体属性。
来源:
cloud functions python to access Datastore
https://googleapis.dev/python/datastore/latest/entities.html