如何从 Google Colab 访问 Cloud SQL

How to access Cloud SQL from Google Colab

我有一个 Google 云 SQL 实例,IP 为 public,只能通过白名单 IP 和通过 SSL 连接访问。

我想知道如何使用 Python 从 Google Colab 连接到这个数据库。

如果我尝试像任何外部应用程序一样连接,连接将被拒绝,因为 "client" 的 IP 未列入白名单(而且我无法将其列入白名单,因为我不这样做,而且很有可能它是不稳定的)

是否有快捷方式,例如 Google App Engine 使用其实例和 google 客户端连接到数据库?

谢谢

回答有点晚,但我想我有一个解决方案,它涉及使用 Cloud SQL Proxy。总的来说,您首先需要使用 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]

最后一行将输出信息转储,我们特别需要 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

稍后您可以(我发现这很有帮助)使用

检查代理的日志
!cat nohup.out

最后,您可以使用地址 127.0.0.1:5432(或您在上面设置的任何端口)构建连接。我是这样使用 psycopg2

conn = psycopg2.connect(
    host='127.0.0.1', port='5432', database=[YOUR DB NAME],
    user=[USERNAME], password=[PASSWORD])

它似乎可以工作,尽管它肯定比直接连接慢一点。

转到 Google 云控制台中的云 SQL 实例页面。 转到云 SQL 实例页面

点击实例名称打开实例详情页面。 Select 连接选项卡。 Select Public IP 复选框。 单击添加网络。 在网络字段中,输入您要允许连接的 IP 地址或地址范围。(对于 colab 添加两个网络:-34.0.0.0/8 和 35.0.0.0/8) 使用 CIDR 表示法。

可以选择为此条目输入名称。 单击完成。 单击“保存”以更新实例。

并且我使用 pymysql 模块连接到数据库并且成功了!!!

在 colab 中,

`pymysql.connect(host="enter publicIP present in overview of sql instance", user="root",passwd="", db="your database name") `

最简单的SQL SERVER方式,只要允许已经提到的两个colab网络:34.0.0.0/8和35.0.0.0/8

    !pip install pymssql
    import pymssql
    conn = pymssql.connect(server='public IP',user='user',password='pass',database='dbname') 
    cursor = conn.cursor()  
    cursor.execute('SELECT TOP 10 * FROM table;')  
    row = cursor.fetchone()  
    while row:
     print(str(row))
     row = cursor.fetchone()