Cuando un proyecto Django comienza con SQLite, es habitual que queramos migrar a MySQL para mejorar rendimiento, escalabilidad y compatibilidad con entornos productivos. Aquí te guío paso a paso para hacerlo correctamente, desde la configuración de Django hasta la migración de datos usando la herramienta sqlite3-to-mysql
.
Preparar el entorno: instalar MySQL y dependencias
- Instala MySQL y asegúrate de que está funcionando.
- Crea la base de datos para tu proyecto:
CREATE DATABASE nombre_bd CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ejemplo:
CREATE DATABASE pfgaming CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- Instala el conector oficial de MySQL para Python, que Django usará para comunicarse con la base MySQL:
pip install mysqlclient
Nota para Windows: Si tienes problemas instalando
mysqlclient
, puede que necesites instalar Visual Studio Build Tools o usar la alternativapymysql
. Peromysqlclient
es la opción recomendada por su rendimiento.
Configurar Django para usar MySQL
Edita el archivo settings.py
y reemplaza la configuración de base de datos SQLite por esta configuración MySQL:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'pfgaming', 'USER': 'root', 'PASSWORD': '1234', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'charset': 'utf8mb4', }, } }
Guarda los cambios.
Crear la estructura de la base de datos en MySQL
Ejecuta las migraciones de Django para crear las tablas (vacías) en MySQL:
python manage.py migrate
En este punto, tienes la estructura lista, pero tus datos siguen en SQLite.
Migrar datos desde SQLite a MySQL usando sqlite3-to-mysql
Instalar la herramienta
pip install sqlite3-to-mysql
Ejecutar la migración
En la terminal, ejecuta:
sqlite3mysql --sqlite-file=db.sqlite3 --mysql-user=root --mysql-password=tu_contraseña --mysql-database=nombre_bd
Por ejemplo:
sqlite3mysql --sqlite-file=db.sqlite3 --mysql-user=root --mysql-password=1234 --mysql-database=pfgaming
Esto hará que:
- La herramienta lea la base SQLite (
db.sqlite3
) - Convierta las tablas y datos al formato compatible MySQL
- Inserte todo en la base
pfgaming
Si tu MySQL está en otro host o puerto (no estás en localhost y puerto por defecto 3306), agrega estas opciones:
--mysql-host=ip_o_host --mysql-port=puerto
Verificar la migración
Puedes revisar la base de datos MySQL con cualquier cliente MySQL (Workbench, DBeaver, consola).
También, prueba en Django shell:
python manage.py shell
from juegos.models import Juego print(Juego.objects.count()) print(Juego.objects.first())
Si ves tus datos, ¡felicidades! La migración fue exitosa.
Consejos finales
- Verifica que el conjunto de caracteres (charset) y la colación de MySQL sean compatibles con tus datos (
utf8mb4
es recomendable para emojis y caracteres especiales). - Realiza pruebas exhaustivas, sobre todo si tienes relaciones, campos complejos o datos binarios.
- Revisa que tus dependencias y librerías de producción estén configuradas para MySQL.
Resumen rápido
- Instala MySQL y crea la base de datos.
- Instala
mysqlclient
para Django. - Cambia
DATABASES
ensettings.py
para apuntar a MySQL. - Ejecuta
python manage.py migrate
para crear estructura vacía. - Usa
sqlite3-to-mysql
para migrar estructura + datos. - Verifica que Django puede leer tus datos en MySQL.