在 Python 开发过程中,可以通过使用 ORM 操作 MySQL 来简化编程。但是随着业务数据越来越多,就需要对数据库进行优化,比如:分库分表、读写分离、分布式等等。
因为我使用的是微服务开发模式,分布式天然和我们项目兼容,为了实现分布式数据库,我采用和 MySQL 99.99% 兼容的 TiDB 作为数据库底层。但是,问题随之而来,现有的业务都是通过 ORM 操作 MySQL,那么 Python 用哪个 ORM 库可以实现连接 TiDB 呢?找了好久都没找到,后来突然猛然醒悟!既然 MySQL 99.99% 兼容的 TiDB,那么理论上所有支持 Python ORM 的包,都能支持 TiDB。
然后就在 Google 上看到一句话:
TiDB 支持 MySQL 传输协议及其绝大多数的语法。这意味着现有的 MySQL
连接器和客户端都可以继续使用。所以正常情况下来说应该直接使用原来 Python 的程序连接 TiDB 就可以了。
一、客户端连接
CLI
- MySQL Client
- mycli
GUI
- PHPMyAdmin
- MySQL Workbench
- Navicat
二、应用程序连接
Python
- mysqlclient
- PyMySQL
- MySQL-Python
Java
- JDBC
Golang
- go-sql-driver
三、ORM 连接
对于 ORM 生成的语句,需要先验证 TiDB 是否支持和是否需要优化。
Python
- Django ORM
- SQLAlchemy
Java
- Hibernate
- MyBatis
Golang
- Gorm
- xorm