Wie Django Arbeit mit nicht unterstützten MySQL-Treiber wie GEVENT-mysql oder Gleichzeitigkeit der MySQL-Treiber zu machen?

StackOverflow https://stackoverflow.com/questions/2636536

Frage

Ich bin in läuft Django auf einem Asynchron-Framework wie concurrence oder GEVENT interessiert. Beide Frameworks kommen mit ihren eigenen async MySQL-Treiber.

Das Problem ist Django nur offiziell unterstützt MySQLdb. Was muss ich Django Arbeit mit den MySQL-Treiber zu machen tun, die mit GEVENT oder Gleichzeitigkeits kommen?

Gibt es eine Schritt-für-Schritt-Anleitung irgendwo, dass ich folgen kann? Ist das ein großes Unternehmen?

Danke.

War es hilfreich?

Lösung

ein dreifaches Hoch für @ traviscline Vorschlag gehen mit pymysql . sein Vorschlag auf diesen Beitrag basiert von mozilla . alles was man braucht ist eine einfache Patch auf Ihre manage.py Datei

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

den Import in Ihrer Einstellungsdatei ändern und monkeypatch () seit pymysql ist ein reiner Python-Treiber.

TRAVIS erwähnt, dass er für Kompatibilitätstests durch, die Einfuhren zu ändern und die Unittests für pymysql, mysqldb läuft und myconnpy.

Beachten Sie, dass es bereits Beispiele von feineren Details für aufpassen - aber alles in allem ist dies ein elegant und leicht zu verwaltende Lösung. Ich werde aktualisieren, wenn ich diesen Lauf in der Produktion erhalten!

Andere Tipps

Ich war erfolgreich in immer pymysql zur Arbeit mit Django folgenden tun:

  1. Kommentieren Sie die try-except-Block am Anfang des base.py Datei, wo MySQLdb importiert wird.
  2. Fügen Sie die folgenden vier Zeilen zu base.py

    try:
        import pymysql as Database
    except ImportError:
        pass
    
  3. erwähnt Wie in den Link, dass egbutter geschrieben, gehen Sie auf die base.py Datei und finden Ersetzen MySQLdb mit pymysql an relevanten Teilen der Datei, also nicht die Mühe der Fehlermeldungen zu ändern (Sie könnten, aber das ist bei Ihnen).

  4. Speicher base.py, und führen Sie den folgenden Befehl aus dem apt Standort der Server zu sehen, starten.

    python manage.py runserver
    
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top