使用 Python 连接到 Cloud SQL 并不总是那么简单。
根据具体情况,有时您必须连接到 Unix 域套接字、将 TCP 连接的 IP 地址列入允许列表、在本地运行 Cloud SQL Auth 代理。确保这些连接安全是另一个挑战:您可能必须管理 SSL 证书、防火墙规则、IP 地址等。
是否有推荐的方法使用 Python 以安全和简单的方式连接到 Cloud SQL?
是的,确实有 Cloud SQL Python Connector,这是一个 Python 包,可以让所有三个受支持的数据库引擎(Postgres、MySQL 和 SQL Server)从任何地方(本地计算机、Cloud Run、App Engine、Cloud Functions 等)都轻松且安全连接到 Cloud SQL
Python 连接器是 Cloud SQL 连接器库之一(也可在 Java、Go 和 Node 中使用)。
连接器与其他方法有何不同?
Cloud SQL 连接器库提供 以下优势:
如何使用 Python 连接器...代码是什么样的?
基本用法(使用SQLAlchemy)
from google.cloud.sql.connector import Connector, IPTypes
import sqlalchemy
# initialize Cloud SQL Connector
connector = Connector()
# SQLAlchemy database connection creator function
def getconn():
conn = connector.connect(
"project:region:instance-name", # Cloud SQL Instance Connection Name
"pg8000",
user="my-user",
password="my-password",
db="my-db-name",
ip_type=IPTypes.PUBLIC # IPTypes.PRIVATE for private IP
)
return conn
# create SQLAlchemy connection pool
pool = sqlalchemy.create_engine(
"postgresql+pg8000://",
creator=getconn,
)
# interact with Cloud SQL database using connection pool
with pool.connect() as db_conn:
# query database
result = db_conn.execute("SELECT * from my_table").fetchall()
# Do something with the results
for row in result:
print(row)
# close Cloud SQL Connector
connector.close()
有交互式“入门”Colab 笔记本,向您展示如何使用 Cloud SQL Python 连接器 - 所有这些都无需您自己编写一行代码!笔记本将根据您与 Cloud SQL 一起使用的数据库引擎自动使用受支持的数据库驱动程序。
它可以与流行的 Web 框架一起使用吗?
是的,Python Connector 可以轻松地在 Web 框架中使用,例如 Flask-SQLAlchemy(和 Flask)、FastAPI 等。