在Google云控制台中,我可以使用“数据存储>实体”一次更新一个实体,或使用GQL进行SELECT
个查询。
我需要更新几个实体,并且一个接一个地做是不切实际的。当我在本地GAE服务器中运行项目时,是否可以执行更新查询或类似于“管理服务器”中存在的“交互式控制台”的方法?
编辑:为澄清起见,我想执行此操作而无需在生产服务器中部署新代码。
答案 0 :(得分:1)
我看了看文档,看来执行更新查询的唯一方法是使用任何Java or Python,我已经审查了gcloud可以用来管理数据存储的选项,没有运行GQL查询的选项。
达到目标的一种选择是在Cloud Functions上创建一个简单的应用程序,该应用程序执行参数中给出的GQL查询。
答案 1 :(得分:1)
正如sergio franco所述,可以使用Cloud Functions来访问数据存储并更新实体。仍然需要部署该功能,但是由于可以通过控制台完成所有工作,因此,与向项目中添加新代码并部署整个项目相比,它要简单得多,而且速度也快。
请务必记住,无论函数的大小如何,每次执行函数时都要为您定价。更多详细信息here
# Function dependencies, for example:
# package>=version
google-cloud-datastore==1.8.0
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()
该函数返回的所有内容都将打印在页面的“输出”部分。
用print
调用的所有内容都会发送到日志
您可以像访问字典一样访问所有实体属性。
来源:
cloud functions python to access Datastore
https://googleapis.dev/python/datastore/latest/entities.html