【问题标题】:Can Django, Google App Engine and Postgres work together?Django、Google App Engine 和 Postgres 可以一起工作吗?
【发布时间】:2016-04-03 13:51:45
【问题描述】:

我正在尝试将 Openshift 托管的 Django 网站转移到 Google App Engine。我想将它连接到现有的 PostgreSQL 数据库。但是,我在Google's documentation 中找到了这个:

一小部分原生 C python 模块和原生 C python 模块的子集不适用于 Google App Engine。禁用的模块分为以下几类:(...)

请注意,使用上述任何功能的第三方软件包将无法与 Google App Engine 一起使用(例如 PostgreSQL 等软件包)。

我的本​​地 GAE 服务器产生了以下错误:

配置不当:加载 psycopg2 模块时出错:没有名为 psycopg2._psycopg 的模块

Further research 似乎表明此错误是由于 GAE 的限制引起的,而不是由于配置错误。当然,必须有一些合理的方式将我的 Django 网站与外部托管的 PostgreSQL 服务器连接起来。我有哪些选择?

编辑:为了澄清,我想我需要一个纯 Python 替代 psycopg2 与 Django 一起工作。换句话说,它还应该实现一个我可以使用的 Django 数据库后端。

【问题讨论】:

  • 你看过gcloud吗? googlecloudplatform.github.io/gcloud-python/stable 这是一个用于与 Datastore 交互的 API,您可以使用它来将内容从 Django 应用程序迁移到 App Engine 应用程序。 (我不确定这是否适用于你想要完成的事情,但我想我还是会让你知道哈哈)
  • 我想将我的数据库托管在它当前所在的位置,所以我需要一种方法让 Django 连接到我现有的 PostgreSQL 数据库。我不能的原因是因为 Django (psycopg2) 中的标准 PostgreSQL 连接器不是纯 Python。

标签: python django postgresql google-app-engine


【解决方案1】:

您也许可以使用pg8000

【讨论】:

  • 这只能使用Django database backend。 pg8000 好像没有,但我指的帖子是在 2010 年发布的,所以我可能会遗漏一些东西。
  • 它们都实现了 Python DB API 2.0,因此将 django.db.backends.postgresql 从 psycopg 移植到 pg8000 应该非常简单 - 除了查找/替换之外没有太多工作。
  • 实际上,psycopg2 似乎在 DBAPI 2.0 之上实现了一些 non-standard features。看起来移植该后端还需要 psycopg2 特定的逻辑,如 this 具有 pg8000 等价物。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-06
  • 2021-03-05
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多