Python 仅使用pyscopg2从应用程序引擎连接到云SQL Postgres

Python 仅使用pyscopg2从应用程序引擎连接到云SQL Postgres,python,postgresql,google-app-engine,psycopg2,Python,Postgresql,Google App Engine,Psycopg2,我不知道这里出了什么问题 我使用纯psycopg2开发了一个Python/Flask web应用程序。最初使用Postgres的本地实例,然后我在google上启动了一个Postgres云SQL,并使用 conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "104.***.***.**", port = "5432") 现在我需要部署应用程序,但从文

我不知道这里出了什么问题

我使用纯psycopg2开发了一个Python/Flask web应用程序。最初使用Postgres的本地实例,然后我在google上启动了一个Postgres云SQL,并使用

   conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "104.***.***.**", port = "5432")
现在我需要部署应用程序,但从文档中我了解到,我不能只使用IP。然而,文档示例都是基于SQLAlchamy的,我以前没有使用过它,所以不想在其中重写我的应用程序

据我所知,云SQL根据app.yaml中指定实例的条目在代理中加载实例。它是以一种简单的方式实现的。unix套接字。所以我试过了

conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "/cloudsql/[my instance name here]")
我尝试了云控制台,使用那里的开发代理加载到unix套接字并预览了应用程序,它似乎工作得很好。但当我部署这个工作版本时。它仍然无法连接到数据库


那么,我在这里做错了什么呢?

我能够找出问题所在。对于像我这样的业余爱好者来说,这是一个很好的学习过程。我的假设是正确的。云SQL根据app.yaml中指定实例的条目在代理中加载实例。它是在unix套接字中实现的(对于像我这样的业余爱好者来说,这是指向文件夹的路径,而不是IP)。所以连接字符串应该如下所示

conn = psycopg2.connect(database="********", user = "********", password = "**********", host = "/cloudsql/my instance name here")
请注意没有端口设置,因为这会混淆psycopg2和底层Postgres库

然而,这之前不起作用的原因是因为没有启用云SQL API。当我开始阅读文档时,我认为这只是指在项目中设置云SQL数据库,我已经这样做了。我错了,这是一个单独的步骤,基本上包括在项目的API部分单击enable。一旦启用了它。一切都很顺利