Cómo hacer que el trabajo de Django con los conductores de MySQL no autorizados tales como GEvent-MySQL o MySQL controlador de concurrencia?
-
26-09-2019 - |
Pregunta
Estoy interesado en el funcionamiento de Django en un marco asíncrono como concurrencia o GEvent. Ambos marcos vienen con su propio controlador asincrónico MySQL.
El problema es que Django sólo admite oficialmente MySQLdb. ¿Qué necesito hacer para hacer el trabajo de Django con los controladores de MySQL que vienen con GEvent o concurrencia?
¿Hay algún lugar una guía paso a paso que puedo seguir? ¿Es esta una empresa importante?
Gracias.
Solución
tres hurras por sugerencia de @ traviscline para ir con pymysql . su sugerencia se basa en este post de Mozilla . todo lo que necesita es un sencilla parche para su archivo manage.py
#!/usr/bin/env python
+try:
+ import pymysql
+ pymysql.install_as_MySQLdb()
+except ImportError:
+ pass
cambio de la importación del archivo de configuración, y monkeypatch (), ya que es un conductor pymysql pitón puro.
Travis mencionó que se pone a prueba de compatibilidad cambiando las importaciones y en funcionamiento los unittests para pymysql, MySQLdb y myconnpy.
Tenga en cuenta que ya hay ejemplos de finos detalles a tener en cuenta - pero en general se trata de una solución elegante, fácil de mantener. Voy a actualizar cuando llegue a este espectáculo de correr en la producción!
Otros consejos
tuve éxito en conseguir pymysql a trabajar con Django haciendo lo siguiente:
- comentario la excepción try-bloque en el comienzo de la base.py de archivos, donde ha sido importada MySQLdb.
-
Añadir las cuatro líneas siguientes a base.py
try: import pymysql as Database except ImportError: pass
-
Como se mencionó en el enlace que egbutter publicado, vaya al archivo base.py y encontrar reemplazo
MySQLdb
conpymysql
en las partes pertinentes del expediente, es decir, no se molestan en cambiar los mensajes de error (que podría, pero eso depende de usted). -
Guardar base.py, y ejecute el siguiente comando desde la ubicación apta para ver el servidor de arranque.
python manage.py runserver