我的应用程序是一个Flask Web服务器,有一个postgresql后端。到目前为止,我一直在运行在服务器所在的同一计算引擎上设置DB。我正在通过Google Cloud SQL将我的数据库从计算引擎转换到专用的DB服务器。我的flask web应用程序最好能在Google Cloud Run上运行。
我一直很难在网上找到任何关于只使用psycopg2而不使用SQLAlchemy建立连接的说明。我的应用程序不是使用SQLAlchemy构建的,如果有一个简单的解决方案可以解决我的问题,我不愿意转换它。
我已经尝试了下面的方法,但根本无法连接到数据库:
connectionString = 'dbname=%s user=%s password=%s host=%s' % (db_name, db_username, user_pwd, public_IP)
conn = psycopg2.connect(connectionString)
字符串
或者是
connectionString = 'dbname=%s user=%s password=%s host=%s' % (db_name, db_username, user_pwd, '/cloudsql/{}'.format("my-project-id:us-central1:my-db-name"))
conn = psycopg2.connect(connectionString)
型
这两种情况都无法连接到Cloud SQL。我使用公共IP的代码似乎会加载一段时间,但不会连接。
这可以用Cloud SQL来实现吗?如果没有,是否有任何替代办法可以做到这一点?
1条答案
按热度按时间zvms9eto1#
只要您通过Unix套接字部署了Cloud SQL Proxy,您展示的第二个示例就可以用于连接。
要在本地测试应用程序,您需要安装代理,然后运行以下命令:
字符串
要通过Cloud Run运行Cloud SQL代理,如果您通过gcloud部署,则可以使用
--add-cloudsql-instances
:型
否则,如果您使用的是Cloud Console,则只需将“Cloud SQL Connection”添加到Cloud Run服务,Unix套接字连接应该可以工作。