23

Concurrenceやgeventなどの非同期フレームワークでDjangoを実行することに興味があります。どちらのフレームワークにも、独自の非同期MySQLドライバーが付属しています。

問題は、Djangoが公式にMySQLdbのみをサポートしていることです。DjangoをgeventまたはConcurrenceに付属のMySQLドライバーで動作させるには何をする必要がありますか?

私が従うことができるステップバイステップのガイドはどこかにありますか?これは大きな仕事ですか?

ありがとう。

4

2 に答える 2

37

pymysqlを使用するという @traviscline の提案に対する 3 つの歓声。彼の提案は、mozilla からのこの投稿に基づいていました。必要なのは、manage.py ファイルへの簡単なパッチだけです

#!/usr/bin/env python
+try:
+    import pymysql
+    pymysql.install_as_MySQLdb()
+except ImportError:
+    pass 

設定ファイルのインポートを変更し、pymysql は純粋な python ドライバーであるため、monkeypatch() を変更します。

travis は、インポートを変更し、pymysql、mysqldb、および myconnpy の単体テストを実行して、互換性をテストしていると述べました。

細心の注意を払う必要がある詳細な例が既にあることに注意してください- しかし、全体として、これはエレガントで保守可能なソリューションです。これが本番環境で実行されたら更新します!

于 2011-08-23T19:50:55.860 に答える
-1

私はpymysqlをDjangoで次のように動作させることに成功しました:

  1. MySQLdb がインポートされているbase.pyファイルの先頭にある try-except ブロックをコメント アウトします。
  2. 次の 4 行をbase.pyに追加します。

    try:
        import pymysql as Database
    except ImportError:
        pass
    
  3. egbutterが投稿したリンクで述べたように、base.py ファイルに移動し、ファイルの関連する部分でfind-replaceMySQLdbを実行します。つまり、エラー メッセージを変更する必要はありません (可能ですが、それはあなた次第です)。pymysql

  4. base.py を保存し、apt の場所から次のコマンドを実行して、サーバーの起動を確認します。

    python manage.py runserver
    
于 2013-12-22T21:05:42.960 に答える