web-dev-qa-db-ja.com

PyMySQLとは何ですか?MySQLdbとはどう違うのですか? Djangoデプロイメントに影響しますか?

MySQLdbの代わりにPyMySQLを使用して、Django 1.3アプリでいくつかの問題を解決しました。スイッチの作成方法に関するこのチュートリアルに従いました: http:// web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.html

PyMySQLが実際に何であり、MySQLdbとどう違うのかを知りたいと思います。

私はそれをローカルホストで使用しており、それをホスティングにアップロードします。

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

40
Hafiz

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

通常、アプリをデプロイする際にコアDjango=ファイルをアップロードしません。デプロイサーバーでDjangoが正常に機能している場合は、何も変更する必要はありませんDBドライバーはORMの1つまたは2つ下の段であり、どのコードが使用されているかに依存するコードはまったく作成されていません。

16
Cole

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

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

  • 一部のシステムで実行する方が簡単かもしれません
  • pyPyで動作します
  • 「緑化」することができ、geventで動作します

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

try:
    import pymysql
    pymysql.install_as_MySQLdb()
except ImportError:
    pass
59
Daniel Eriksson

最初のポイント:

pymysql wiki ページによると:

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

2番目のポイント:

Djangoがローカルホストで正常に動作している場合、開発では問題ありません。

10
Tauquir

私の経験では、「MySQL-python」のインストールに苦労しました-(MySQLdb)。より多くの選択肢を探すようになったため、pymysqlが見つかりました。また、簡単にインストールでき、最初は魅力的な動作をしました。したがって、MySQLdbの代わりにpymysqlのみを使用することをお勧めします。

1
Devendra Bhat