2011-08-28 3 views
31

MySQLdbの代わりにPyMySQLを使用してDjango 1.3アプリケーションのいくつかの問題を解決しました。 http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.htmlPyMySQLとは何ですか?そしてPythonはMySQLdbとどう違うのですか?それはDjangoの展開に影響を与えますか?

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

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

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

+1

'pymysql'は' mysqldb'( 'mysql-python')パッケージの純粋なpythonポートです。したがって、 'pymysql'はCコンパイラを必要とせずに任意のシステムにインストールすることができます。 'mysqldb'をインストールするとコンパイラが必要になることがあります.Windowsにエラーが発生する可能性があります(エラー:vcvarsall.batを見つけることができません)。 – skjoshi

+0

この質問はそれほど広範ではなかった場合にはもっと役立つでしょう。あなたはいくつかのことを尋ねています:2つのライブラリの違い、PyMySQLを何らかの共有ホスティング環境(どのようなことについても言及していない、したがっておそらくあなたを助けることができない)に配備する方法、より広義には、DjangoでPyMySQLを使用する際に気にする必要がある問題です。それらは3つの異なる質問であり、そのように尋ねられた方がよいでしょう。 –

+0

PyMySQLを使用すべきかどうかについて質問があり、複数の質問をしているという2つの懸念がありました。 – Hafiz

答えて

12

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

通常、アプリをデプロイするときにコアDjangoファイルをアップロードすることはありません。 Djangoがデプロイメントサーバでうまく動作している場合は、そこで何か変更する必要はありません。 DBドライバはORM even以下の1つまたは2つです。あなたが書いたコードは、どれが使用中であるかによって決まります。

9

あなたの最初のポイントは:pymysql wikiページによる

MySQLdb, is a C extension module that has a reputation of being difficult to compile, especially if you're on a Mac. Additionally, end-users need to wait for new binaries to be compiled for each new release of Python, and MySQLdb will never run on Jython, IronPython, or PyPy (without something like cpyext or IronClad). We also maintain 100% compatibility between Python 2 and Python 3, so all advancements made on the 2.x trunk will be immediately available on Python 3.

あなたの第二の点:

If django is working fine on your localhost, then it should be fine on your development.

+0

yahしかし、私のポイントは、上記の2つのファイルでMySQLdbをpymysqlに変更している間に、それがdjangoであるということです。問題が生じるでしょうか?またはdjangoは既にwebhostingsにありますか?またはpymysqlはありますか? – Hafiz

47

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 
+1

PyMySQLの公式バージョンは、上記の方法でDjango 1.4と(現在)互換性がないと付け加えておきます。あなたがそれを試したい場合は、https://github.com/CMGS/PyMySQLで動作するように見えるフォークがあります。 –

+0

これは私に多くの時間を節約しました - ありがとう! –

+5

もう1つの理由を追加します:Python 3をサポートするために – Alveoli

0

私は、「MySQLの-のpython」をインストールすることが困難だった私の経験を1として - (のMySQLdbを) 。 私はpymysqlを見つけたので、より多くの選択肢を探すようになりました。また、簡単にインストールされ、最初は魅力的になりました。 私はMySQLdbの代わりにpymysqlを使うことを勧めます。

関連する問題