如何从 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()
我有一个 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()