【问题标题】:initialize GAE datastore with start data?使用起始数据初始化 GAE 数据存储?
【发布时间】:2013-07-29 10:48:29
【问题描述】:

这是我关于 stackoverflow 的第一个问题,我是编程新手:

在部署我的应用程序时,将数据加载到 GAE 数据存储区的正确方法是什么?这应该只在部署时发生一次。

换句话说:我怎样才能在我的代码中调用方法,以便这些方法只在我部署我的应用程序时被调用?

python2.7 的 GAE 文档说,不应该调用 main 函数,所以我不能这样做:

if __name__ == '__main__':
   initialize_datastore()
   main()

【问题讨论】:

  • 你可以检查数据是否存在,如果不存在,运行你的启动脚本
  • 是的,不要那样做。事实上,如果您的处理程序脚本底部有“if name == 'main'”代码,请将其删除。

标签: python google-app-engine datastore


【解决方案1】:

创建一个仅限管理员使用的处理程序。当使用简单的 GET 请求调用该处理程序时,您可以让它检查种子数据是否存在,如果不存在,则插入它。

Configuring a handler to require login or administrator status.

另一种选择是编写一个利用远程 API 的 Python 脚本。这将允许您访问本地数据源,例如 CSV 文件或本地托管的数据库,并且不需要您创建可能笨拙的处理程序。

阅读文档中的远程 API。

Using the Remote API Shell - Google App Engine

【讨论】:

  • 感谢您的回答!这听起来不是那么优雅的解决方法。这是一个特殊的问题吗?应该有一个简单的方法,还是没有?
  • @Timbatron 的建议很优雅,而且是正确的做法。如果您有大量数据要创建,您可以考虑在任务队列中运行它(截止日期为 10 分钟而不是 1 分钟)
  • 那么远程 API 怎么样?当我一开始回复时,我完全不知道那个选项。
  • 感谢您的回答。我会玩这两种选择,然后决定,什么是最适合我的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2012-01-04
  • 2019-10-31
  • 2021-03-10
  • 1970-01-01
  • 2018-08-13
相关资源
最近更新 更多