Wie Django Arbeit mit nicht unterstützten MySQL-Treiber wie GEVENT-mysql oder Gleichzeitigkeit der MySQL-Treiber zu machen?
-
26-09-2019 - |
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.
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:
- Kommentieren Sie die try-except-Block am Anfang des base.py Datei, wo MySQLdb importiert wird.
-
Fügen Sie die folgenden vier Zeilen zu base.py
try: import pymysql as Database except ImportError: pass
-
erwähnt Wie in den Link, dass egbutter geschrieben, gehen Sie auf die base.py Datei und finden Ersetzen
MySQLdb
mitpymysql
an relevanten Teilen der Datei, also nicht die Mühe der Fehlermeldungen zu ändern (Sie könnten, aber das ist bei Ihnen). -
Speicher base.py, und führen Sie den folgenden Befehl aus dem apt Standort der Server zu sehen, starten.
python manage.py runserver