標籤:

有哪些比較好的在 Python 中訪問 MySQL 的類庫?

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線程數限制

TAG:Python | MySQL |