python - example - ¿Qué es PyMySQL y cómo difiere de MySQLdb? ¿Puede afectar el despliegue de Django?
mysql-python install (4)
PyMySQL y MySQLdb proporcionan la misma funcionalidad: ambos son conectores de bases de datos. La diferencia está en la implementación donde MySQLdb es una extensión C y PyMySQL es puramente Python.
Hay algunas razones para probar PyMySQL:
- podría ser más fácil ejecutar en algunos sistemas
- funciona con PyPy
- puede ser "verde" y funciona con gevent
La forma correcta de usarlo con Django es importarlo y decirle que se haga pasar por MySQLdb en su archivo de nivel superior, generalmente manage.py. Coloque el siguiente código en la parte superior de su manage.py (o el archivo que llame al iniciar su servidor):
try:
import pymysql
pymysql.install_as_MySQLdb()
except ImportError:
pass
Acabo de resolver algunos problemas en mi aplicación Django 1.3 utilizando PyMySQL en lugar de MySQLdb. Seguí este tutorial sobre cómo hacer el cambio: http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.html
Ahora quiero saber qué es realmente PyMySQL y cómo es diferente de MySQLdb.
Lo estoy usando en localhost y luego lo subiré a algún hosting.
¿Está bien usar PyMySQL en localhost y en alojar lo que proporcionan? Como he cambiado "MySQLdb" en base.py e introspection.py a "PyMySQL", ¿tendré que subirlo al servidor después de cambiar estos archivos? O como son los archivos de Django, ya que Django ya estará cargado allí, ¿no importa mucho?
PyMySQL y MySQLdb son ambos conectores de base de datos para Python, bibliotecas que permiten que los programas de Python hablen con un servidor MySQL.
Normalmente, nunca subiría los archivos core de Django al implementar una aplicación. Si Django funciona bien en su servidor de implementación, definitivamente no necesita cambiar nada allí. El controlador DB está a un paso o dos por debajo del ORM incluso, y ciertamente ninguno de los códigos que ha escrito depende de cuál de estos está en uso.
Según mi experiencia, tuve dificultades para instalar "MySQL-python" - (MySQLdb). Me hizo buscar más alternativas, así que encontré pymysql, y también se instaló fácilmente y funcionó al principio, como un amuleto. Así que sugeriría usar pymysql solo en lugar de MySQLdb.
Tu primer punto:
De acuerdo con la página wiki de pymysql :
MySQLdb, es un módulo de extensión C que tiene la reputación de ser difícil de compilar, especialmente si está en una Mac. Además, los usuarios finales deben esperar a que se compilen nuevos binarios para cada nueva versión de Python, y MySQLdb nunca se ejecutará en Jython, IronPython o PyPy (sin algo como cpyext o IronClad). También mantenemos una compatibilidad del 100% entre Python 2 y Python 3, por lo que todos los avances realizados en el troncal 2.x estarán disponibles de inmediato en Python 3.
Tu segundo punto:
Si django funciona bien en su servidor local, entonces debería estar bien en su desarrollo.