📣
TiDB Cloud Essential 开放公测中。此页面由 AI 自动翻译,英文原文请见此处。

选择驱动或 ORM

TiDB 高度兼容 MySQL 协议,但部分功能与 MySQL 不兼容。完整的兼容性差异列表请参见 MySQL 兼容性

Java

本节介绍如何在 Java 中使用驱动和 ORM 框架。

Java 驱动

    支持级别:Full

    你可以按照 MySQL 官方文档 下载并配置 Java JDBC 驱动。推荐在 TiDB v6.3.0 或更高版本中使用最新的 GA 版本 MySQL Connector/J。

    关于如何构建完整应用的示例,请参见 使用 TiDB 和 JDBC 构建简单 CRUD 应用

    支持级别:Full

    TiDB-JDBC 是基于 MySQL 8.0.29 定制的 Java 驱动。TiDB-JDBC 基于 MySQL 官方 8.0.29 版本编译,修复了原 JDBC 在 prepare 模式下多参数多字段 EOF 的 bug,并增加了 TiCDC 快照自动维护、SM3 认证插件等功能。

    基于 SM3 的认证仅在 TiDB 的 TiDB-JDBC 中支持。

    如果你使用 Maven,请在 pom.xml 文件的 <dependencies></dependencies> 部分添加以下内容:

    <dependency> <groupId>io.github.lastincisor</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29-tidb-1.0.2</version> </dependency>

    如果你需要启用 SM3 认证,请在 pom.xml 文件的 <dependencies></dependencies> 部分添加以下内容:

    <dependency> <groupId>io.github.lastincisor</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29-tidb-1.0.2</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.67</version> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>1.67</version> </dependency>

    如果你使用 Gradle,请在 dependencies 中添加以下内容:

    implementation group: 'io.github.lastincisor', name: 'mysql-connector-java', version: '8.0.29-tidb-1.0.2' implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.67' implementation group: 'org.bouncycastle', name: 'bcpkix-jdk15on', version: '1.67'

    Java ORM 框架

      支持级别:Full

      为避免手动管理应用中不同依赖之间的复杂关系,你可以使用 GradleMaven 获取应用的所有依赖(包括间接依赖)。注意,只有 Hibernate 6.0.0.Beta2 及以上版本支持 TiDB 方言。

      如果你使用 Maven,请在 <dependencies></dependencies> 中添加以下内容:

      <dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-core</artifactId> <version>6.2.3.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>

      如果你使用 Gradle,请在 dependencies 中添加以下内容:

      implementation 'org.hibernate:hibernate-core:6.2.3.Final' implementation 'mysql:mysql-connector-java:8.0.33'

      此外,你需要在 Hibernate 配置文件 中指定 TiDB 方言:org.hibernate.dialect.TiDBDialect,该方言仅在 Hibernate 6.0.0.Beta2 及以上版本支持。如果你的 Hibernate 版本早于 6.0.0.Beta2,请先升级。

      支持级别:Full

      为避免手动管理应用中不同依赖之间的复杂关系,你可以使用 GradleMaven 获取应用的所有依赖(包括间接依赖)。

      如果你使用 Maven,请在 <dependencies></dependencies> 中添加以下内容:

      <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.13</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency>

      如果你使用 Gradle,请在 dependencies 中添加以下内容:

      implementation 'org.mybatis:mybatis:3.5.13' implementation 'mysql:mysql-connector-java:8.0.33'

      关于如何使用 MyBatis 构建 TiDB 应用的示例,请参见 使用 TiDB 和 MyBatis 构建简单 CRUD 应用

      Java 客户端负载均衡

      tidb-loadbalance

      支持级别:Full

      tidb-loadbalance 是应用侧的负载均衡组件。通过 tidb-loadbalance,你可以自动维护 TiDB server 节点信息,并在客户端使用 tidb-loadbalance 策略分配 JDBC 连接。客户端应用与 TiDB server 之间直接使用 JDBC 连接的性能高于使用负载均衡组件。

      目前,tidb-loadbalance 支持以下策略:roundrobin、random 和 weight。

      如果你使用 Maven,请在 pom.xml 文件的 <dependencies></dependencies> 元素体中添加以下内容:

      <dependency> <groupId>io.github.lastincisor</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29-tidb-1.0.2</version> </dependency> <dependency> <groupId>io.github.lastincisor</groupId> <artifactId>tidb-loadbalance</artifactId> <version>0.0.5</version> </dependency>

      如果你使用 Gradle,请在 dependencies 中添加以下内容:

      implementation group: 'io.github.lastincisor', name: 'mysql-connector-java', version: '8.0.29-tidb-1.0.2' implementation group: 'io.github.lastincisor', name: 'tidb-loadbalance', version: '0.0.5'

      Golang

      本节介绍如何在 Golang 中使用驱动和 ORM 框架。

      Golang 驱动

      go-sql-driver/mysql

      支持级别:Full

      关于如何下载和配置 Golang 驱动,请参考 go-sql-driver/mysql 文档

      关于如何构建完整应用的示例,请参见 使用 Go-MySQL-Driver 连接 TiDB

      Golang ORM 框架

      GORM

      支持级别:Full

      GORM 是 Golang 中流行的 ORM 框架。你可以使用 go get 命令获取应用的所有依赖。

      go get -u gorm.io/gorm go get -u gorm.io/driver/mysql

      关于如何使用 GORM 构建 TiDB 应用的示例,请参见 使用 GORM 连接 TiDB

      Python

      本节介绍如何在 Python 中使用驱动和 ORM 框架。

      Python 驱动

        支持级别:Compatible

        你可以按照 PyMySQL 文档 下载并配置驱动。推荐使用 PyMySQL 1.0.2 或更高版本。

        关于如何使用 PyMySQL 构建 TiDB 应用的示例,请参见 使用 PyMySQL 连接 TiDB

        支持级别:Compatible

        你可以按照 mysqlclient 文档 下载并配置驱动。推荐使用 mysqlclient 2.1.1 或更高版本。

        关于如何使用 mysqlclient 构建 TiDB 应用的示例,请参见 使用 mysqlclient 连接 TiDB

        支持级别:Compatible

        你可以按照 MySQL Connector/Python 文档 下载并配置驱动。推荐使用 Connector/Python 8.0.31 或更高版本。

        关于如何使用 MySQL Connector/Python 构建 TiDB 应用的示例,请参见 使用 MySQL Connector/Python 连接 TiDB

        Python ORM 框架

          支持级别:Full

          Django 是流行的 Python Web 框架。为解决 TiDB 与 Django 的兼容性问题,PingCAP 提供了 TiDB 方言 django-tidb。安装方法请参见 django-tidb 文档

          关于如何使用 Django 构建 TiDB 应用的示例,请参见 使用 Django 连接 TiDB

          支持级别:Full

          SQLAlchemy 是 Python 中流行的 ORM 框架。你可以使用 pip install SQLAlchemy==1.4.44 命令获取应用的所有依赖。推荐使用 SQLAlchemy 1.4.44 或更高版本。

          关于如何使用 SQLAlchemy 构建 TiDB 应用的示例,请参见 使用 SQLAlchemy 连接 TiDB

          支持级别:Compatible

          peewee 是 Python 中流行的 ORM 框架。你可以使用 pip install peewee==3.15.4 命令获取应用的所有依赖。推荐使用 peewee 3.15.4 或更高版本。

          关于如何使用 peewee 构建 TiDB 应用的示例,请参见 使用 peewee 连接 TiDB

          在你确定了驱动或 ORM 之后,可以 连接到你的 TiDB 集群

          需要帮助?

          欢迎在 DiscordSlack 社区提问,或 提交支持工单

          文档内容是否有帮助?