我正在尝试使用云函数Python脚本连接运行PostgreSQL 11的Cloud SQL。理想情况下,我想使用简单的连接到数据库,该连接需要
我也尝试了Google提供的代码示例,该示例直接使用
sqlalchemy.create_engine()
进行连接。
这是我的当前尝试(我已经尝试过带有/或不带有/.s.PGSQL.5432
后缀):engine = sqlalchemy.create_engine('postgresql+psycopg2://USERNAME:PASSWORD@/DB_NAME?host=/cloudsql/INSTANCE_CONNECTION_NAME/.s.PGSQL.5432')
engine.connect()
我也尝试了Google提供的代码示例,该示例直接使用
psycopg2
,但仍然无法正常工作。Error: function crashed. Details:
could not connect to server: Connection refused
Is the server running locally and accepting
connections on Unix domain socket "/cloudsql/vida-production:us-central1:vida-ops/.s.PGSQL.5432"?
编辑:
感谢@kurtisvg指出这一点。由于云函数正在尝试连接到不同项目上的云SQL,因此我必须将云函数的服务帐户添加到云SQL项目的IAM中。
设置IAM后,我使用以下Python代码将sqlalchemy
引擎连接到Cloud SQL:
# Don't add the "/.s.PGSQL.5432 suffix" because it will already be added back automatically by the library...
engine = sqlalchemy.create_engine('postgresql+psycopg2://USERNAME:PASSWORD@/DB_NAME?host=/cloudsql/INSTANCE_CONNECTION_NAME')
engine.connect()