【问题标题】:Can you use GQL / Google DataStore outside of google appengine?您可以在 google appengine 之外使用 GQL / Google DataStore 吗?
【发布时间】:2014-08-27 21:00:36
【问题描述】:

我可以在本地 python 应用程序中使用 GQl/DataStore 吗?我知道我可以在编写 web 应用程序时运行 dev_appserver.py 时在本地使用它们,但现在我不想做任何与 web 相关的事情,只用我的普通 pythonfile.py 将其全部保存在本地,没有 HTML 接口。是否有可能做到这一点?

【问题讨论】:

  • 为什么?....要使用您需要使用开发应用程序服务器的数据存储,除非您进入 sdk 并弄清楚如何编写自己的数据存储版本...但老实说,第一个问题,是为什么?您可以使用本地文件和本地数据库而不是数据存储,这需要 HTML
  • 我认为在 sqlite 之类的基础上编写一个简单的界面可能会更好(docs.python.org/2/library/sqlite3.html)。 IIRC,这就是 dev_appserver 模拟生产数据存储的方式。
  • “为什么”是什么意思?原因是因为我已经学会使用 GQL/DataStore 作为一个不错的 NOSQL 数据库,而不是必须学习全新的东西或在另一个库之上或从头开始编写一些东西,能够使用它会很好这对我的需求很有用,到目前为止我很清楚,我想说这些是主要原因
  • 我的意思是为什么你以错误的方式使用工具。是的,你可以用螺丝刀的手柄敲钉子,但最好还是用锤子。没有比数据存储更容易使用的 nosql 解决方案,数据存储旨在放置在分布式架构上并通过 Web 访问。 (顺便说一句,旁注,在回复评论时,如果帖子不是来自我,请添加 @Julldar 以便我收到通知:))
  • @Julldar 很公平,我想是时候研究其他选项了。谢谢

标签: python google-app-engine google-cloud-datastore gql


【解决方案1】:

远程 API 也可以在本地应用程序中使用。这将允许您编写使用 App Engine 的本地应用程序 服务和访问数据存储。需要注意的是,使用 远程 API 将在您的应用程序上产生配额使用 访问。

开始之前,请确保已将 App Engine SDK 添加到您的 Python 路径和远程 API 在您的 App Engine 应用程序中启用。这 以下示例显示了使用 OAuth 2.0 凭据进行配置 远程 API:

from google.appengine.ext.remote_api import remote_api_stub
from helloworld import helloworld

remote_api_stub.ConfigureRemoteApiForOAuth('your_app_id.appspot.com',
                                           '/_ah/remote_api')

# Fetch the most recent 10 guestbook entries
entries = helloworld.Greeting.all().order("-date").fetch(10)
# Create our own guestbook entry
helloworld.Greeting(content="A greeting").put()

参考:https://cloud.google.com/appengine/docs/python/tools/remoteapi

【讨论】:

  • 虽然这在理论上可以回答这个问题,it would be preferable 在此处包含答案的基本部分,并提供链接以供参考。
  • 我已更新我的帖子以包含“实际”答案。 :)
  • 谢谢。答案看起来棒极了!一切顺利。
【解决方案2】:

是的,可以通过 App Engine 之外的客户端库访问 Cloud Datastore。它们在 v1 API 上运行,经过几年的 Beta 测试后,该 API 刚刚进入 GA(2016 年 8 月 16 日)。

The Client Libraries 可用于 Python、Java、Go、Node.js、Ruby,甚至还有 .NET。

您应该知道,NDB 中支持的 GQL 语言变体与 Cloud Datastore 服务本身支持的有点不同。 NDB 客户端库执行一些它自己的自定义解析,可以将某些查询拆分为多个以发送到服务,并在客户端组合结果。

阅读我们的GQL reference docs

【讨论】:

    猜你喜欢
    • 2019-06-25
    • 2017-01-16
    • 1970-01-01
    • 2010-11-12
    • 2011-11-10
    • 2014-03-02
    • 2019-08-07
    • 2019-07-11
    • 1970-01-01
    相关资源
    最近更新 更多