PythonのMySQLを使用しての接続は、三者のパッケージが必要で、現在主流の方法は、pymysqlとはmysqlclient(のMySQLdbのつまりのpython3バージョン)です。別のcymysql(pymysqlスピードアップのCのフォークとオプション)
[email protected]:1.著者は、2つのライブラリが稲田直樹、PIPライブラリのメールボックスがmailtoのを指している同じ人であります
2. PyMySQLコードスタッフのメタンは、より速く、PyMySQLアプリケーションシナリオはmysqlclientを言います
だから、どのように我々は選ぶべきなのでしょうか?まず、我々はこの2つのパッケージについて知っておく必要があります。
、pymysql
1)純粋なPythonの、簡単なインストール(直接取り付けPIP)を達成するために
2)純粋なPython実装に起因geventフレームワークとの良好な組み合わせであることができます
二つ、あるmysqlclient
1)C拡張モジュールは、コンパイラのインストールが報告されたエラーの様々な、明らかに簡単なpymysqlを引き起こす可能性があり
2)高速。
上記の比較では、あなたは明確にする必要があり、パフォーマンスの低下のpymysqlのあるmysqlclientの比率ですが、シンプルで使いやすいpymysql。一般的に次の3つの条件がない限りはmysqlclientを選択する必要があります。
1)あなたは、いくつかの理由でlibmysqlclientの使用することはできません
2)あなたはgeventまたはeventletで使用したいです
3)プロトコル互換MySQLを検討
元はこれです:
mysqlclient-python is much faster than PyMySQL.
When to use PyMySQL is:
You can't use libmysqlclient for some reason
You want to use monkeypatched socket of gevent or eventlet
You wan't to hack mysql protocol
上記の理由から、あるmysqlclientよりもはるかに現在の使用pymysqlプログラマー、特に第二、今のpythonサイト、基本geventのために使用されるか、またはそれをeventletすることにつながりました。
強力なあるmysqlclientはあるmysqlclientは現在も使用することができgevent、解決されました。直接コードに:
import MySQLdb
import gevent.hub
def _gevent_waiter(fd, hub=gevent.hub.get_hub()):
hub.wait(hub.loop.io(fd, 1))
conn = MySQLdb.connect(
db=self.db,
host=self.host if not self.ssh else LOOPBACK_ADDRESS,
port=self.port if not self.ssh else int(self.ssh.local_bind_port),
user=self.user,
password=self.passwd,
charset=self.charset,
connect_timeout=self.connect_timeout,
cursorclass=DictCursor,
use_unicode=True,
waiter=_gevent_waiter,
)
上記接続、他のパラメータ多くの説明は、それがgeventとシームレスに等価mysqlclinetと、ウェイター述べ。
あなたがこの記事読むことができ、その_gevent_waiterを理解していない geventハブを 。
だから、どのように我々はそれをテストするのですか?テストプロセスは完璧なウェイター= _gevent_waiterと、クエリが20秒データベースtime.sleep実行されるときに、データベースへの接続は、他の要求のWebサービスを参照するには、この時間は、要求を処理できない場合、単一のWebサービス・プロセスから、比較的単純ですああ。。。
これにより、システムは、データベースクエリサービスの大規模な数を持って、私は竜巻を使用しないことがあります。。
githubの住所:
https://github.com/PyMySQL/mysqlclient-python
https://github.com/PyMySQL/PyMySQL/
現時点では、コントラストpymysqlとはmysqlclientの指標:
https://python.libhunt.com/compare-mysqlclient-python-vs-pymysql
プログラムのほとんどは、ああ,,,猿があまりにも多くのよりpymysqlのMySQLdb遅く......使いやすいが、pymysqlのパフォーマンスの低下を選択し、まだ比較的トラブルで冷却されているので、大規模なプロジェクトはまだでビット無味ああpymysqlを感じますこれはMySQLdbはを使用することが示唆されました。