Pat*_* M. 9 google-cloud-sql google-colaboratory
我有一个带有公共 IP 的 Google Cloud SQL 实例,只能通过列入白名单的 IP 并通过 SSL 连接访问。
我想知道如何使用 Python 从 Google Colab 连接到这个数据库。
如果我尝试像任何外部应用程序一样连接,则连接会被拒绝,因为“客户端”的 ip 未列入白名单(我无法将其列入白名单,因为我不这样做,而且很可能是不稳定的)
是否有快捷方式,例如使用 Google App Engine 使用其实例和 Google 客户端连接到数据库?
谢谢
回答有点晚,但我想我有一个解决方案,它涉及使用Cloud SQL 代理。总的来说,您首先需要使用 Gcloud SDK(包含在 Colab 中)进行身份验证,然后安装代理,然后启动它。我在两个街区中做到了这一点
# gcloud login and check the DB
!gcloud auth login
!gcloud config set project [YOUR PROJECT ID]
!gcloud sql instances describe [YOUR CLOUDSQL INSTANCE ID]
Run Code Online (Sandbox Code Playgroud)
最后一行将输出我们connectionName特别想要的信息转储。然后下一个块下载代理并告诉它代理该 CloudSQL 实例:
# download and initialize the psql proxy
!wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
!chmod +x cloud_sql_proxy
# "connectionName" is from the previous block
!nohup ./cloud_sql_proxy -instances="[connectionName]"=tcp:5432 &
!sleep 30s
Run Code Online (Sandbox Code Playgroud)
稍后您可以(我发现它很有帮助)检查代理的日志
!cat nohup.out
Run Code Online (Sandbox Code Playgroud)
最后,您可以构建与地址127.0.0.1:5432(或您在上面设置的任何端口)的连接。我是这样psycopg2做的
conn = psycopg2.connect(
host='127.0.0.1', port='5432', database=[YOUR DB NAME],
user=[USERNAME], password=[PASSWORD])
Run Code Online (Sandbox Code Playgroud)
它似乎有效,尽管它肯定比直接连接慢一点。
| 归档时间: |
|
| 查看次数: |
6335 次 |
| 最近记录: |