Web2py – Migración de SQLite a MySQL

Recientemente necesité convertir una aplicación CRM basada en web2py alojada en un servidor Apache con un backend SQLite a MySQL. A continuación se presentan los pasos que funcionaron para mí. He creado una aplicación de ejemplo para trabajar con si desea seguir adelante, puede descargar todos los archivos aquí.

Nota: Estoy usando la versión 2.4.7 de web2py en un entorno Unix. Antes de comenzar, asegúrese de tener SQLite instalado en su sistema. Puedes instalarlo con pip,pip install sqlite, o puede tomar los archivos binarios en http://sqlite.org/download.html. También necesita MySQL instalado. Si necesitas ayuda, sigue los tutoriales aquí.

La base de datos actual tiene todas las tablas predeterminadas de web2py, así como una tabla de usuarios con los campos id, startdate y enddate:

db.define_table(
    'users',
    Field('start_date','string'), 
    Field('end_date','string')
)

Este código sigue la sintaxis DAL de web2py. Hay 30.000 filas de datos en la tabla.

Limpieza de datos

Descargue la última base de datos SQLite de su aplicación. De forma predeterminada, es el archivo llamado storage.sqlite en la carpeta “/web2py/applications//databases/”. Para descargar, cree un volcado de base de datos, ejecutando el siguiente comando dentro del terminal:

$ sqlite3 storage.sqlite .dump > output_before.sql

Usando un editor de texto, edite el archivo outputbefore.sql:

  • Eliminar todas las líneas que comienzan conPRAGMA,BEGIN TRANSACTION,CREATE TABLECOMMIT.
  • Eliminar todas las líneas pertenecientes a lasqlite_sequenceCuadro (i.e.DELETE FROM sqlite_sequence;) .
  • Para todosINSERT INTO "" VALUES(...)sustituyan las dobles comillas (" ") Antes y después de lacon los backtics (` `) – p. ej.INSERT INTO `table_name` VALUES(...).

Finalmente, guarde el archivo como outputafter.sql en su escritorio.

Configuración de MySQL

Cree la base de datos MySQL en el servidor remoto. Tome nota del nombre de la base de datos, nombre de usuario y contraseña. También puede configurar su base de datos localmente para las pruebas, que voy a utilizar para este tutorial:

$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;

Configure su aplicación para usar MySQL. Inicie su administrador web2py. Editar db.py:

db = DAL('mysql://:@localhost/')

Guarde el archivo.

Permitir que web2py inicialice la base de datos MySQL:

  • Copia de seguridad del contenido de/web2py/applications//databases/carpeta. A continuación, elimine el contenido de la carpeta.
  • De vuelta en el administrador de web2py. Haga clic en el botón “administración de bases de datos” para crear las tablas en su base de datos MySQL local.

Encienda su base de datos MySQL en el terminal para asegurarse de que las tablas vacías se agregaron a la base de datos:

Añadir datos

Navegue hasta donde guardó output.sql (debería ser su escritorio), luego ejecute el siguiente comando para agregar datos a MySQL:

$ mysql -u root migration < output_after.sql

Esto tomará unos minutos para ejecutarse completamente.

Dentro del administrador de web2py, compruebe su base de datos y aplicación para asegurarse de que los nuevos datos estén accesibles.

Enlaces Externos

Entradas relacionadas

Deja una respuesta

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