MySQL、sqlalchemy、pymysql、mysqldb、DBAPI之间关系梳理(终于明白了)
python3不再支持mysqldb 请用pymysql和mysql.connector
问题背景
用Python处理MySQL数据库相关问题时,需要用到相关库,主要有pymysql、sqlalchemy等,各种术语比较多,需要做一下系统梳理。
问题解释
Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。
Python 数据库接口支持非常多的数据库,- GadFly - mSQL - MySQL - PostgreSQL - Microsoft SQL Server 2000 - Informix - Interbase - Oracle - Sybase。。。
DB API
DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。
Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。
Python DB-API使用流程:
引入 API 模块。
获取与数据库的连接。
执行SQL语句和存储过程。
关闭数据库连接
MySQL-Python(MySQLdb)
MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。
MySQL-python 又叫 MySQLdb,是 Python 连接 MySQL 最流行的一个驱动,很多框架也是依据其开发的。
C语言开发。
只支持python2.x,安装有许多前置条件。
Mysqlclient
完全兼容MySQLdb的衍生版;同时兼容Python3.x
是Django ORM的依赖工具。
原生SQL操作数据库。
PyMysql
纯Python实现的驱动。
速度不如MySQLdb。
兼容MySQL-python
Peewee
ORM 是 Python 对象与数据库关系表的一种映射关系,,有了 ORM 你不再需要写 SQL 语句。
ORM兼容多种数据库系统,如sqlite, mysql、postgresql。
写原生 SQL 的过程非常繁琐,代码重复。
SQLAlchemy
既支持原生 SQL,又支持 ORM 的工具;