在使用 Google Appengine Flexible + Python 时,如何直接使用 Psycopg2(不使用 SQLAlchemy)访问 CloudSQL PostgreSQL 数据库?
最佳答案
你好 我自己
,
解决方法:
- 在你的
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
- 在要部署和运行的任何 python 文件中,将该环境变量直接传递给
psycopg2
的connect
语句。这利用了psycopg2.connect
将 URI 直接传递给psql
客户端库的能力(这可能不适用于旧的 PostgreSQL 版本......)。
import os import psycopg2 conn = psycopg2.connect(os.environ['PSYCOPG2_POSTGRESQL_URI'])
- 在本地使用 google 云代理工具时,如果您的本地服务器不知道
app.yaml
,请确保先设置 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
我希望它对你也有用:)
关于postgresql - 直接在 Google AppEngine 上使用 psycopg2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51061722/