Python 在云函数中使用云SQL(Postgres)
我正在尝试使用云函数Python脚本连接到运行PostgreSQL 11的云SQL。理想情况下,我希望使用一个简单的Python 在云函数中使用云SQL(Postgres),python,postgresql,google-cloud-functions,psycopg2,google-cloud-sql,Python,Postgresql,Google Cloud Functions,Psycopg2,Google Cloud Sql,我正在尝试使用云函数Python脚本连接到运行PostgreSQL 11的云SQL。理想情况下,我希望使用一个简单的pandas.DataFrame.to\u sql()连接到数据库,这需要一个sqlalchemy.create\u engine()来连接 这是我当前的尝试(我已经尝试了使用/不使用/.s.PGSQL.5432后缀): engine=sqlalchemy.create_engine('postgresql+psycopg2://USERNAME:PASSWORD@/DB_NAME
pandas.DataFrame.to\u sql()
连接到数据库,这需要一个sqlalchemy.create\u engine()
来连接
这是我当前的尝试(我已经尝试了使用/不使用/.s.PGSQL.5432
后缀):
engine=sqlalchemy.create_engine('postgresql+psycopg2://USERNAME:PASSWORD@/DB_NAME?host=/cloudsql/INSTANCE_CONNECTION_NAME/.s.PGSQL.5432'))
引擎连接()
我还尝试了提供的直接使用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"?
编辑:
谢谢你指出这一点。因为云函数正在尝试连接到另一个项目上的云SQL。我必须将云功能的服务帐户添加到云SQL项目的IAM中
设置IAM后,我用于将sqlalchemy
引擎连接到云SQL的Python代码如下:
#不要添加“/.s.PGSQL.5432后缀”,因为它已经被库自动添加回。。。
engine=sqlalchemy.create_engine('postgresql+psycopg2://USERNAME:PASSWORD@/DB_NAME?host=/cloudsql/INSTANCE_CONNECTION_NAME'))
引擎连接()
确保检查以下事项:
- 启用云SQL管理API
- 确保默认服务帐户具有
IAM角色云SQL客户端
如果要在两个项目之间进行连接,请确保启用Admin API并向运行您尝试从中连接的功能的服务帐户授予权限(对于两个项目) 您是否正在使用第二代云sql实例@DougStevenson是的,我已经验证了我使用的是第二代云SQLThank@kurtisvg,云函数和云SQL在不同的项目中。因此,在像您建议的那样将服务帐户添加到云SQL IAM角色之后,它就可以工作了!