如何使用Python连接到Cloud SQL?

Jac*_*oon 5 google-cloud-sql google-cloud-platform cloud-sql-proxy

使用 Python 连接到 Cloud SQL 并不总是那么简单。

根据上下文,有时您必须连接到 Unix 域套接字、将 TCP 连接的 IP 地址列入允许列表、在本地运行 Cloud SQL Auth 代理。确保这些连接安全是另一个挑战:您可能必须管理 SSL 证书、防火墙规则、IP 地址等。

是否有推荐的方法使用 Python以安全简单的方式连接到 Cloud SQL ?

Jac*_*oon 10

是的,确实有Cloud SQL Python Connector,这是一个 Python 包,可以让所有三个受支持的数据库引擎(Postgres、MySQL 和 SQL Server)从任何地方(本地计算机、Cloud Run、应用程序)轻松安全地连接到 Cloud SQL引擎、云功能等)

\n

Python 连接器是 Cloud SQL 连接器库之一(也可在JavaGoNode中使用)。

\n
\n

连接器与其他方法有何不同?

\n
\n

Cloud SQL 连接器库具有以下优势

\n
    \n
  • IAM 授权:连接器使用 IAM 权限来控制谁以及什么可以连接到您的 Cloud SQL 实例。
  • \n
  • 改进的安全性:连接器在客户端连接器和服务器端代理之间使用强大的、更新的 TLS 1.3 加密和身份验证,独立于数据库协议。
  • \n
  • 方便:连接器消除了使用和分发 SSL 证书、管理防火墙或源/目标 IP 地址的要求。
  • \n
  • IAM 数据库身份验证(可选):连接器提供对Cloud SQL\xe2\x80\x99s 自动 IAM 数据库身份验证功能的支持。
  • \n
\n
\n

如何使用 Python 连接器...代码是什么样的?

\n
\n

基本用法(使用 SQLAlchemy)

\n
from google.cloud.sql.connector import Connector, IPTypes\nimport sqlalchemy\n\n# initialize Cloud SQL Connector\nconnector = Connector()\n\n# SQLAlchemy database connection creator function\ndef getconn():\n    conn = connector.connect(\n        "project:region:instance-name", # Cloud SQL Instance Connection Name\n        "pg8000",\n        user="my-user",\n        password="my-password",\n        db="my-db-name",\n        ip_type=IPTypes.PUBLIC # IPTypes.PRIVATE for private IP\n    )\n    return conn\n\n# create SQLAlchemy connection pool\npool = sqlalchemy.create_engine(\n    "postgresql+pg8000://",\n    creator=getconn,\n)\n\n# interact with Cloud SQL database using connection pool\nwith pool.connect() as db_conn:\n    # query database\n    result = db_conn.execute("SELECT * from my_table").fetchall()\n\n    # Do something with the results\n    for row in result:\n        print(row)\n\n# close Cloud SQL Connector\nconnector.close()\n
Run Code Online (Sandbox Code Playgroud)\n

有交互式“入门”Colab 笔记本,向您展示如何使用 Cloud SQL Python Connector \xe2\x80\x93,而无需您自己编写一行代码!笔记本将根据您与 Cloud SQL 结合使用的数据库引擎自动使用受支持的数据库驱动程序。

\n\n
\n

它可以与流行的 Web 框架一起使用吗?

\n
\n

是的,Python Connector 可以轻松地在 Web 框架中使用,例如Flask-SQLAlchemy(和 Flask)、FastAPI等。

\n\n