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 的工具;