Skip to content

Latest commit

 

History

History
144 lines (98 loc) · 6.29 KB

README-zh.md

File metadata and controls

144 lines (98 loc) · 6.29 KB

使用 mysqlclient 连接 TiDB

English | 中文

这是 PingCAP 为 mysqlclient 编写的用于连接 TIDB 的示例项目

TiDB 是一个兼容 MySQL 的数据库。mysqlcient 为当前流行的开源 Python Driver 之一。

前置要求

开始实践

1. 克隆示例代码仓库到本地

git clone https://github.com/tidb-samples/tidb-python-mysqlclient-quickstart.git
cd tidb-python-mysqlclient-quickstart

2. 安装依赖 (包括 mysqlclient)

pip install -r requirements.txt

如果这是你第一次安装 mysqlclient,那你可能会遇到一些问题,因为它不仅是一个纯 Python 包,还需要一些 C 扩展,请参考 mysqlclient 官方文档来解决。

3. 配置连接信息

(选项 1) TiDB Serverless
  1. 在 TiDB Cloud 控制台中,打开 Clusters 页面,选择你的 TiDB Serverless 集群,进入 Overview 页面,点击右上角的 Connect 按钮。

  2. 确认窗口中的配置和你的运行环境一致。

    • Endpoint TypePublic
    • Connect WithGeneral
    • Operating System 为你的运行环境

    如果你在 Windows Subsystem for Linux (WSL) 中运行,请切换为对应的 Linux 发行版。

  3. 点击 Generate password 生成密码。

    如果你之前已经生成过密码,可以直接使用原密码,或点击 Reset Password 重新生成密码。

  4. 运行以下命令,将 .env.example 复制并重命名为 .env

    cp .env.example .env
  5. 复制并粘贴对应连接字符串至 .env 中。示例结果如下:

     TIDB_HOST='{gateway-region}.aws.tidbcloud.com'
     TIDB_PORT='4000'
     TIDB_USER='{prefix}.root'
     TIDB_PASSWORD='{password}'
     TIDB_DB_NAME='test'
     CA_PATH=''

    注意替换 {} 中的占位符为 Connect 窗口中获得的值。

    TiDB Serverless 要求使用 secure connection,由于 mysqlclient 的 ssl_mode 默认为 PREFERRED,所以不需要你手动指定 CA_PATH,设置为空即可。但如果你有特殊原因需要手动指定 CA_PATH,可以参考 TiDB Cloud 文档获取不同操作系统下证书的路径。

  6. 保存文件。

(选项 2) TiDB Dedicated
  1. 在 TiDB Cloud Web Console 中,选择你的 TiDB Dedicated 集群,进入 Overview 页面,点击右上角的 Connect 按钮。点击 Allow Access from Anywhere 并点击 Download TiDB cluster CA 下载证书。

    更多配置细节,可参考 TiDB Dedicated 标准连接教程.

  2. 运行以下命令,将 .env.example 复制并重命名为 .env

    cp .env.example .env
  3. 复制并粘贴对应的连接字符串至 .env 中。示例结果如下:

     TIDB_HOST='{host}.clusters.tidb-cloud.com'
     TIDB_PORT='4000'
     TIDB_USER='{username}'
     TIDB_PASSWORD='{password}'
     TIDB_DB_NAME='test'
     CA_PATH='{your-downloaded-ca-path}'

    注意替换 {} 中的占位符为 Connect 窗口中获得的值,并配置前面步骤中下载好的证书路径。

  4. 保存文件。

(选项 3) 自建 TiDB
  1. 运行以下命令,将 .env.example 复制并重命名为 .env

    cp .env.example .env
  2. 复制并粘贴对应 TiDB 的连接字符串至 .env 中。示例结果如下:

    TIDB_HOST='{tidb_server_host}'
    TIDB_PORT='4000'
    TIDB_USER='root'
    TIDB_PASSWORD='{password}'
    TIDB_DB_NAME='test'

    注意替换 {} 中的占位符为你的 TiDB 对应的值,并删除 CA_PATH 这行。如果你在本机运行 TiDB,默认 Host 地址为 127.0.0.1,密码为空。

  3. 保存文件。

4. 运行示例代码

python mysqlclient_example.py

5. 期望输出

期望的输出

注意事项

  • Driver 封装程度较低,因此在程序内会见到大量的 SQL 语句。与 ORM 不同,因为没有数据对象的存在,mysqlclient 的查询对象以元组 (tuple) 进行表示。虽然 Python 的 Driver 相较其他语言的使用更方便,但因其不可屏蔽底层实现,需手动管控事务的特性,如果没有大量必须使用 SQL 的场景,仍然推荐使用 ORM 进行程序编写。这可以降低程序的耦合性。
  • 关于 mysqlclient 的更多使用方法,可以参考 mysqlclient 官方文档

下一步