Configurar Django para usar MySQL
Quiero alejarme un poco de PHP y aprender Python. Para poder realizar desarrollo web con Python, necesitaré un marco que me ayude con las plantillas y otras cosas.
Tengo un servidor que no es de producción y lo uso para probar todo el material de desarrollo web. Es una pila LAMP de Debian 7.1 que ejecuta MariaDB en lugar del paquete común de servidor MySQL.
Ayer instalé Django y creé mi primer proyecto llamado firstweb . Todavía no he cambiado ninguna configuración.
Aquí está mi primera gran confusión. En el tutorial seguí al tipo que instaló Django, comencé su primer proyecto, reinicié Apache y Django simplemente funcionó a partir de ese momento. Fue a su navegador y fue a la página predeterminada de Django sin problemas.
Yo, sin embargo, tengo que ingresar a mi carpeta firstweb y ejecutar
python manage.py runserver myip:port
Y funciona. Ningún problema. Pero me pregunto si se supone que debe funcionar así y si esto causará problemas en el futuro.
Mi segunda pregunta es que quiero configurarlo para que utilice mi base de datos MySQL. Entro a mi settings.py en /firstweb/firstweb y veo MOTOR y NOMBRE, pero no estoy seguro de qué poner aquí.
Y luego, en las áreas USUARIO, CONTRASEÑA y HOST, ¿es esta mi base de datos y sus credenciales? Si estoy usando localhost, ¿ puedo simplemente poner localhost en el área HOST?
El soporte MySQL es fácil de agregar. En tu DATABASES
diccionario tendrás una entrada como esta:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB_NAME',
'USER': 'DB_USER',
'PASSWORD': 'DB_PASSWORD',
'HOST': 'localhost', # Or an IP Address that your DB is hosted on
'PORT': '3306',
}
}
También tiene la opción de utilizar archivos de opciones MySQL , a partir de Django 1.7. Puedes lograr esto configurando tu DATABASES
matriz de esta manera:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'OPTIONS': {
'read_default_file': '/path/to/my.cnf',
},
}
}
También necesitas crear el /path/to/my.cnf
archivo con configuraciones similares a las anteriores.
[client]
database = DB_NAME
host = localhost
user = DB_USER
password = DB_PASSWORD
default-character-set = utf8
Con este nuevo método de conexión en Django 1.7, es importante saber el orden en que se establecen las conexiones:
1. OPTIONS.
2. NAME, USER, PASSWORD, HOST, PORT
3. MySQL option files.
En otras palabras, si configura el nombre de la base de datos en OPCIONES, esto tendrá prioridad sobre NOMBRE, lo que anularía cualquier cosa en un archivo de opciones MySQL.
Si solo está probando su aplicación en su máquina local, puede usar
python manage.py runserver
Agregar el ip:port
argumento permite que otras máquinas además de la suya accedan a su aplicación de desarrollo. Una vez que esté listo para implementar su aplicación, le recomiendo echar un vistazo al capítulo sobre Implementación de Django en djangobook .
El conjunto de caracteres predeterminado de MySQL a menudo no es utf-8, por lo tanto, asegúrese de crear su base de datos utilizando este SQL:
CREATE DATABASE mydatabase CHARACTER SET utf8 COLLATE utf8_bin
Si está utilizando el conector MySQL de Oracle, su ENGINE
línea debería verse así:
'ENGINE': 'mysql.connector.django',
Tenga en cuenta que primero deberá instalar mysql en su sistema operativo.
brew install mysql (MacOS)
Además, el paquete del cliente mysql ha cambiado para python 3 ( MySQL-Client
solo funciona para python 2)
pip3 install mysqlclient
Para el primero, ejecute los siguientes comandos para instalar las dependencias de Python; de lo contrario, el comando Python RunServer arrojará un error.
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python
Luego configure el archivo settings.py como lo define #Andy y por último ejecute:
python manage.py runserver
Divertirse..!!
Si está utilizando python3.x, ejecute el siguiente comando
pip install mysqlclient
Luego cambie settings.py como
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB',
'USER': 'username',
'PASSWORD': 'passwd',
}
}
Como se dijo anteriormente, primero puede instalar xampp fácilmente desde https://www.apachefriends.org/download.html. Luego, siga las instrucciones como:
- Instale y ejecute xampp desde http://www.unixmen.com/install-xampp-stack-ubuntu-14-04/ , luego inicie el servidor web Apache y la base de datos MySQL desde la GUI.
- Puede configurar su servidor web como desee, pero de forma predeterminada el servidor web está en
http://localhost:80
y la base de datos enport 3306
y PhpMyadmin enhttp://localhost/phpmyadmin/
- Desde aquí puede ver sus bases de datos y acceder a ellas mediante una GUI muy amigable.
- Cree cualquier base de datos que desee utilizar en su proyecto Django.
Edite su
settings.py
archivo como:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'DB_NAME', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '', }}
Instale los siguientes paquetes en virtualenv (si está usando django en virtualenv, que es más preferido):
sudo apt-get instalar libmysqlclient-dev
pip instala MySQL-python
¡¡Eso es todo!! Has configurado Django con MySQL de una forma muy sencilla.
Ahora ejecuta tu proyecto Django:
python administrar.py migrar
python administrar.py servidor de ejecución