instalar - mysql-connector-python
¿Cómo hacer que Django funcione con controladores MySQL no compatibles, como gevent-mysql o el controlador MySQL de Concurrence? (3)
Estoy interesado en ejecutar Django en un marco asíncrono como Concurrence o gevent. Ambos marcos vienen con su propio controlador MySQL asincrónico.
El problema es que Django solo es compatible oficialmente con MySQLdb. ¿Qué debo hacer para que Django funcione con los controladores MySQL que vienen con gevent o Concurrence?
¿Hay alguna guía paso a paso en algún lugar que pueda seguir? ¿Es esto una gran empresa?
Gracias.
Logré que pymysql trabajara con Django haciendo lo siguiente:
- Comente el bloque try-except al principio del archivo base.py , donde se importa MySQLdb.
Agregue las siguientes cuatro líneas a base.py
try: import pymysql as Database except ImportError: pass
Como se menciona en el enlace que publicó, vaya al archivo base.py y find-replace
MySQLdb
conpymysql
en partes relevantes del archivo, es decir, no se moleste en cambiar los mensajes de error (podría hacerlo, pero eso depende de usted).Guarde base.py y ejecute el siguiente comando desde la ubicación apt para ver el inicio del servidor.
python manage.py runserver
con una base de datos de baja latencia, MySQLdb es lo suficientemente bueno incluso utilizado con gevent. Aunque no es parcheable, es posible lograr un buen rendimiento reutilizando la conexión a la base de datos y aumentando el número de trabajadores gevent. La base de datos es pesada y, en general, no es necesario crear miles de conexiones simultáneas para aprovechar su rendimiento, y la relación 1: 1 de trabajador a conexión no es una opción muy mala. Pero para la memoria caché es totalmente otra historia.
tres hurras para la sugerencia de @traviscline para ir con pymysql . su sugerencia se basó en esta publicación de mozilla . solo se necesita un parche simple para su archivo manage.py
#!/usr/bin/env python
+try:
+ import pymysql
+ pymysql.install_as_MySQLdb()
+except ImportError:
+ pass
cambiando la importación en su archivo de configuración y monkeypatch () ya que pymysql es un controlador python puro.
Travis mencionó que prueba la compatibilidad modificando las importaciones y ejecutando las pruebas unitarias para pymysql, mysqldb y myconnpy.
tenga en cuenta que ya hay ejemplos de detalles más finos de los que debe tener cuidado , pero, en general, se trata de una solución elegante y fácil de mantener. ¡lo actualizaré cuando lo ejecute en producción!