有哪些比較好的在 Python 中訪問 MySQL 的類庫?
02-04
python 訪問mysql比較好的類庫是哪個?mysql官方似乎沒有出python的driver,mysql-python又不支持綁定變數,oursql似乎有資料庫gone away的問題。
本來想走捷徑,搜索一下這個問題的答案,結果發現沒有一個完整的回答。現在把整理結果發布出來。Python語言操作MySQL資料庫,要遵守DB API 2.0 規範。以下介面都可以:
1,mysql-python也就是MySQLdb;
2,PyMySQL。支持jython,IronPython,CPython等;3,mxODBC 和 mxODBC Connect。egenix家的東西;4,pyodbc。需進入http://code.google.com;5,MySQL Connector/Python。這個是純python實現的MySQL介面,由Oracle維護;
6,mypysql。由c語言實現,目前還不能完全實現PEP249規範;7,PyPyODBC。一看就知道支持PyPy;用過mysql-python和pymysql,兩者皆有不盡如人意的地方比如mysql-python是封裝的mysqlclient ,無法到底連接的socket。
而pymysql可以得到連接socket,卻不能使用use_result語義,我有個項目兩種情況都需要。
我只好兩個都用。純python的類庫有:pymysql、mysql-connector。
我們項目中當前使用pymysql,為的是能結合gevent使用。MySQL DB API Drivers?
The Python Database API is described in PEP 249. MySQL has three prominent drivers that implement this API:
- MySQLdb is a native driver that has been developed and supported for over a decade by Andy Dustman.
- mysqlclient is a fork of MySQLdb which notably supports Python 3 and can be used as a drop-in replacement for MySQLdb. At the time of this writing, this is the recommended choice for using MySQL.
- MySQL Connector/Python is a pure Python driver from Oracle that does not require the MySQL client library or any Python modules outside the standard library.
經過查閱文檔,我決定採用mysqlclient, 其他的如pymysql和MySQL Connector,都有人做過性能測試,性能都不如mysqldb, 而且mysqlclient是mysqldb的fork,完全兼容,文檔可以直接套用
aiomysql
沒人使用 mysql-connector-python ?
在大數據量的情況下用過,pymysql比MySQLdb慢太多了,所以大項目感覺pymysql還是有點雞肋啊
由於python 2.7版本沒有指定的mysqldb,因此找了個 Unofficial Windows Binaries for Python Extension Packages,網址如下:http://www.lfd.uci.edu/~gohlke/pythonlibs/,下載MySQL-Python.
我用著比較方便的就是MySQL-Python,也就是Yarkee同學說的MySQLdb。
http://sourceforge.net/projects/mysql-python/現在已經在我公司項目中使用,還是很方便的,誒,我記得MySQL-Python就是官方人員參與了的Driver。貌似Pymysql能實現非同步mysql訪問,且在官方的github下多了個項目PyMySQL/Tornado-MySQL · GitHub
自己 按照 yii 框架的方式 封裝一個 mysql 類呢?
推薦閱讀:
※Youtube上有哪些好的python視頻教程?
※機器學習之Python基礎(三)--多進程編程
※[爬蟲,pymongo,json]分析ajax請求並抓取今日頭條組圖
※python高效編程實踐-如何在列表,字典,集合中根據條件篩選數據(1/50)
※Linux線程數限制