SQLite va bien, pero para el mundo de las APIs y otras tareas no es lo mejor. Por ello, hoy toca aprender a usar un motor de base de datos como MySQL.
Los tópicos de hoy son:
Para el curso, podemos usar servicios que proveen de una base de datos MySQL. Para ello, utilizaremos WampServer, un software que provee PHP, Apache y base de datos MySQL. Con un panel de control incluido llamado phpMyAdmin, el cual va muy bien (y seguro te lo encontraras en entornos de producción).
Para ello descargamos WampServer (o XAMPP si lo prefieres):
En XAMPP hay que explícitamente iniciar el servicio MySQL. En WampServer se inician todos automáticamente.
Una vez instalado, y en ejecución, podremos acceder al panel de control de la base de datos http://localhost/phpmyadmin/.
Usaremos el panel de control phpMyAdmin para crear una nueva base de datos, en donde nuestro proyecto creara las tablas correspondientes a cada modelo creado en nuestras aplicaciones de nuestro proyecto Django.
Tambien puedes usar la consola mysql, pero es más dificultoso.
Para ello, ingresamos a http://localhost/phpmyadmin/ y las credenciales son:
root
Una vez en la página principal de phpMyAdmin, creamos una nueva base de datos:
proyecto_django
.utf8mb4_general_ci
.Y eso es todo. Ya tenemos nuestra base de datos proyecto_django
creada.
Antes, es necesario instalar una librería que permite a Django usar el backend.mysql.
Tenemos 2 opciones:
La recomendación es usar PyMySQL
porque funciona muy bien y no tendrás problemas en entornos de producción.
Para ello, debemos usar pip
. Iniciamos una instancia PowerShell, abrimos el entorno virtual de Python y ejecutamos el comando:
pip install pymysql
Al instalarse, nos vamos a settings.py
y agregamos las siguientes líneas.
1 2 |
|
La recomendación es ingresar esas líneas de código antes de la variable
DATABASES
.
Ahora sí, para que nuestro proyecto Django pueda comunicarse con nuestra instancia mysql del software que hayamos elegido, debemos configurarlo dentro de settings.py
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Es importante entender que la migración solo genera las tablas para los modelos, no copia los registros de nuestro antiguo motor de base de datos al nuevo.
Entendido eso, para realizar la migración, basta con ejecutar el siguiente comando en la consola PowerShell:
py manage.py migrate
Ahora, podremos observar en phpMyAdmin que se han generado correctamente las tablas.
Si tienes datos en la base de datos anterior, seguro querrás copiar esos registros a la nueva base de datos.
Para lograrlo, podemos usar DB Browser para abrir el archivo de base de datos db.sqlite3
y luego exportar los registros.
tienda_producto
.Nos exportará un archivo que tendrá el siguiente contenido:
1 2 3 4 5 6 |
|
Tenemos que hacerles unos cambios a las sentencias, ya que phpMyAdmin no las aceptara tal cual.
Primero, quitamos el BEGIN TRANSACTION;
y el COMMIT;
Luego, quitamos las doble comillas del nombre de la tabla.
Tal que se vea asi:
1 2 3 4 |
|
Para ejecutar los comandos SQL, nos vamos a phpMyAdmin.
proyecto_django
.SQL
.CTRL+ENTER
.Y eso es todo, si clicamos en la tabla tienda_productos
dentro de nuestra base de datos proyecto_django
en phpMyAdmin, podremos ver que los inserts se han ejecutado y los registros estan guardados.
Tambien podemos hacer la exportación con archivos CSV con la sección Importar de phpMyAdmin, pero es algo más complejo. Te invitamos a investigar.