46

MySQLdbの代わりにPyMySQLを使用して、Django1.3アプリのいくつかの問題を解決しました。切り替え方法については、次のチュートリアルに従いました:http ://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.html

ここで、PyMySQLが実際に何であるか、およびMySQLdbとどのように異なるかを知りたいと思います。

私はローカルホストでそれを使用していて、それからそれをいくつかのホスティングにアップロードします。

ローカルホストでPyMySQLを使用し、それらが提供するものをホスティングするのは問題ありませんか?base.pyとintrospection.pyの「MySQLdb」を「PyMySQL」に変更したので、これらのファイルを変更した後、サーバーにアップロードする必要がありますか?または、Djangoのファイルであるため、Djangoはすでにそこにアップロードされているので、それほど重要ではありませんか?

4

5 に答える 5

65

PyMySQLとMySQLdbは同じ機能を提供します。どちらもデータベースコネクタです。違いは、MySQLdbがC拡張であり、PyMySQLが純粋なPythonである実装にあります。

PyMySQLを試す理由はいくつかあります。

  • 一部のシステムで実行する方が簡単な場合があります
  • PyPyで動作します
  • それは「緑化」することができ、geventで動作します

Djangoで使用する適切な方法は、それをインポートして、トップレベルファイル(通常はmanage.py)でMySQLdbを偽装するように指示することです。次のコードをmanage.py(またはサーバーの起動時に呼び出すファイル)の最上部に配置します。

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass
于 2012-12-28T22:58:31.937 に答える
19

PyMySQLとMySQLdbはどちらもPythonのデータベースコネクタであり、PythonプログラムがMySQLサーバーと通信できるようにするライブラリです。

通常、アプリをデプロイするときにコアDjangoファイルをアップロードすることはありません。Djangoがデプロイメントサーバーで正常に機能している場合は、そこで何も変更する必要はありません。DBドライバーはORMよりも1〜2ステップ下にあり、作成したコードはどれも、これらのどれが使用されているかに依存しません。

于 2011-08-28T23:57:44.223 に答える
10

最初のポイント:

pymysql wikiページによると:

MySQLdb は C 拡張モジュールであり、特に Mac を使用している場合、コンパイルが難しいという評判があります。さらに、エンドユーザーは、Python の新しいリリースごとに新しいバイナリがコンパイルされるのを待つ必要があり、MySQLdb は Jython、IronPython、または PyPy (cpyext や IronClad のようなものなし) で実行されることはありません。また、Python 2 と Python 3 の間で 100% の互換性を維持しているため、2.x トランクで行われたすべての進歩は Python 3 でもすぐに利用できます。

あなたの2番目のポイント:

ローカルホストで django が正常に動作している場合は、開発でも問題ないはずです。

于 2011-08-29T00:26:12.203 に答える
0

私はこれらのトピックから始めています。私は観察を言いたいだけです:PyMSQLには要件としてCPYTHONがあります(おそらくパフォーマンスのためにオプションですhttps://pypi.org/project/PyMySQL/#requirements) インストールする必要があり、Cpyhton は 'C' に依存しています。Cpython をテストしましたが、C のバージョンでもインストールしたときに問題がありました...両方の実装が 'C' に依存している場合 [パフォーマンスが必要な場合]、同じことです。私...パフォーマンスに問題がなければ、おそらくPyMySQLはCpythonなしで「C」なしで問題ありません。おそらく、Python を使用して PyMySQL だけで開始し、Python を Cpython に切り替えてパフォーマンスを向上させることができます。これは、すべてを実行してから、Cpython に切り替えることを試みることができます。機能の違いを知る必要があります。 . Django PyMySQL では、なぜより適切に実行されたり、いくつかの問題の解決策が提供されたりするのでしょうか? それはおそらく変化にとって重要なことです。MySQLdb はおそらく「C」に直接依存していますが、PyMSQL は Cpython を介して間接的に依存しています (同様のパフォーマンスの場合)。

于 2019-10-27T13:44:35.567 に答える