Migrar un proyecto Django de SQLite a MySQL usando sqlite3-to-mysql

Migrar un proyecto Django de SQLite a MySQL usando sqlite3-to-mysql

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 alternativa pymysql. Pero mysqlclient 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

  1. Instala MySQL y crea la base de datos.
  2. Instala mysqlclient para Django.
  3. Cambia DATABASES en settings.py para apuntar a MySQL.
  4. Ejecuta python manage.py migrate para crear estructura vacía.
  5. Usa sqlite3-to-mysql para migrar estructura + datos.
  6. Verifica que Django puede leer tus datos en MySQL.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

curso django Entrada anterior Cómo implementar un buscador avanzado en Django
curso django Entrada siguiente Cómo implementar registro, login y logout en Django