1

Usar Django con MySQL

Fernando Daniel
DashFx
1643

Pasos a seguir en el terminal

sudo apt-get install mysql-server
sudo mysql_secure_installation
mysql --version
systemctl status mysql.service
mysqladmin -p -u root version

En MySQL:
mysql -p -u root
DB: Crear TuDataBase
Pass root: tupasswordroot
Show databases
CREATE USER ‘user’@'localhost’
IDENTIFIED BY ‘userpassword’ PASSWORD EXPIRE NEVER;

CREATE USER ‘tuproject’@'localhost’
IDENTIFIED BY ‘userproject’ PASSWORD EXPIRE NEVER;

CREATE DATABASE TuDataBase;
GRANT ALL PRIVILEGES ON TuDataBase.* TO ‘user’@‘localhost’;
GRANT ALL PRIVILEGES ON TuDataBase.* TO ‘tuproject’@‘localhost’;

USE mysql
Pager less //para mostrar de a paginas, (usar ‘q’ para salir)
SELECT * FROM user WHERE user = ‘tuproject’ \G

UPDATE mysql.user SET Select_priv = ‘Y’ WHERE user = ‘tuproject’;
Setear todos los priv necesarios de igual forma.

Sudo apt-get mysql-client-core-5.7
sudo apt-get install libmysqlclient-dev
verificar lo que hay:
dpkg -l | grep mysql


Dentro del virtualenv:

pip3 install mysqlclient // reemplaza pip3 install mysql-python
pip3 install PyMySQL

Dentro del proyecto de Django

Add to init.py file:
import pymysql
pymysql.install_as_MySQLdb()

<h1>Esto es porque python 3.X+ usa una biblioteca diferente (pymyslq) a python 2.7 (MySQLdb)</h1>

Dentro del settings.py

<h1>definir las variables de entorno previamente. En mi caso yo las defino en .bashrc en ubuntu</h1> <h1>esto es para mantener la informacion privada privada.</h1>
from django.core.exceptions import ImproperlyConfigured

defget_env_variable(var_name):try:
        return os.getenv(var_name)
    except KeyError:
        error_msg = 'Set the {var_name} environment variable'raise ImproperlyConfigured(error_msg.format(var_name=var_name))


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': get_env_variable('DJANGO_DB_NAME'),
        'USER': get_env_variable('DJANGO_DB_USER_LOCAL'),
        'PASSWORD': get_env_variable('DJANGO_DB_PSW_LOCAL'),
        'HOST': 'localhost',   # Or an IP Address that your DB is hosted on'PORT': get_env_variable('DJANGO_DB_PORT'),
    }
}

Espero les sirva de ayuda. Para mas información pueden visitar la info de django donde se explica como implementar cualquier otra base de datos que queramos.

Saludos

Escribe tu comentario
+ 2