直接在 Google AppEngine 上使用 psycopg2

Using psycopg2 directly on Google AppEngine

使用Google Appengine Flexible + Python时,如何直接使用Psycopg2(不使用SQLAlchemy)访问CloudSQL PostgreSQL数据库?

你好myselfhimself,

这是一个解决方案:

  1. 在你的 app.yaml 中,添加一个环境变量,模仿 Google Appengine Flexible Python CloudSQL documentation's SQLAlchemy 的 URI 但没有 psycopg2+ 前缀:
env_variables:
    PSYCOPG2_POSTGRESQL_URI: postgresql://user:password@/databasename?host=/cloudsql/project-name:region:database-instance-name
  1. 在要部署的任何 python 文件和 运行 中,将该环境变量直接传递给 psycopg2connect 语句。这利用 psycopg2.connect 将 URI 直接传递给 psql 客户端库的能力(这可能不适用于旧的 PostgreSQL 版本..)。
import os
import psycopg2
conn = psycopg2.connect(os.environ['PSYCOPG2_POSTGRESQL_URI'])
  1. 在本地使用 google 云代理工具时,如果您的本地服务器不知道 app.yaml:
  2. ,请确保首先设置 URI 环境变量
export PSYCOPG2_POSTGRESQL_URI="postgresql://user:password@/databasename?host=/cloudsql/project-name:region:database-instance-name"
./cloud_sql_proxy -instances=project-name:region:database-instance-name=tcp:5432
#somewhat later:
python myserver.py

我希望它对你也有用:)