Configurar Django para usar MySQL

Resuelto gregor asked hace 11 años • 13 respuestas

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?

gregor avatar Oct 05 '13 03:10 gregor
Aceptado

El soporte MySQL es fácil de agregar. En tu DATABASESdiccionario 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 DATABASESmatriz 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.cnfarchivo 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:portargumento 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 ENGINElí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-Clientsolo funciona para python 2)

pip3 install mysqlclient
Andy avatar Oct 04 '2013 20:10 Andy

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..!!

Ritesh avatar Aug 29 '2014 13:08 Ritesh

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',
  }
  }
Manoj Jadhav avatar Oct 06 '2016 11:10 Manoj Jadhav

Como se dijo anteriormente, primero puede instalar xampp fácilmente desde https://www.apachefriends.org/download.html. Luego, siga las instrucciones como:

  1. 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.
  2. Puede configurar su servidor web como desee, pero de forma predeterminada el servidor web está en http://localhost:80y la base de datos en port 3306y PhpMyadmin enhttp://localhost/phpmyadmin/
  3. Desde aquí puede ver sus bases de datos y acceder a ellas mediante una GUI muy amigable.
  4. Cree cualquier base de datos que desee utilizar en su proyecto Django.
  5. Edite su settings.pyarchivo como:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB_NAME',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '',
    }}
    
  6. 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

  7. ¡¡Eso es todo!! Has configurado Django con MySQL de una forma muy sencilla.

  8. Ahora ejecuta tu proyecto Django:

    python administrar.py migrar

    python administrar.py servidor de ejecución

root avatar Dec 03 '2014 11:12 root