Mysql
 sql >> Database >  >> RDS >> Mysql

Web2py – Migrazione da SQLite a MySQL

Di recente avevo bisogno di convertire un'app CRM basata su web2py ospitata su un server Apache con un backend SQLite in MySQL. Di seguito sono riportati i passaggi che hanno funzionato per me. Ho creato un'applicazione di esempio con cui lavorare se desideri continuare, puoi scaricare tutti i file qui.

Nota:sto usando web2py versione 2.4.7 su un ambiente Unix. Prima di iniziare, assicurati di aver installato SQLite sul tuo sistema. Puoi installarlo con pip, pip install sqlite oppure puoi prendere i file binari su http://sqlite.org/download.html. Hai anche bisogno di MySQL installato. Se hai bisogno di assistenza, segui i tutorial qui.

Il database corrente ha tutte le tabelle web2py predefinite oltre a utenti tabella con i campi id , data_inizio e data_fine :

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

Questo codice segue la sintassi DAL di web2py. Nella tabella sono presenti 30.000 righe di dati.


Pulizia dei dati

Scarica l'ultimo database SQLite della tua applicazione. Per impostazione predefinita, è il file denominato storage.sqlite nella cartella "/web2py/applications//databases/". Per scaricare, crea un dump del database, eseguendo il seguente comando all'interno del terminale:

$ sqlite3 storage.sqlite .dump > output_before.sql

Utilizzando un editor di testo, modifica output_before.sql file:

  • Rimuovi tutte le righe che iniziano con PRAGMA , BEGIN TRANSACTION , CREATE TABLE e COMMIT .
  • Rimuovi tutte le righe relative a sqlite_sequence tabella (ad esempio, DELETE FROM sqlite_sequence; ).
  • Per tutti i INSERT INTO "<table_name>" VALUES(...) affermazioni, sostituisci le virgolette doppie (" " ) prima e dopo il <table_name> con backtick (` ` ) - per esempio. INSERT INTO `table_name` VALUES(...) .

Infine, salva il file come output_after.sql sul desktop.



Configurazione MySQL

Crea il database MySQL sul server remoto. Prendere nota del nome del database, nome utente e password. Puoi anche impostare il tuo database localmente per il test, che userò per questo tutorial:

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

Configura la tua applicazione per utilizzare MySQL. Avvia il tuo amministratore web2py. Modifica db.py :

db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')

Salva il file.

Consenti a web2py di inizializzare il database MySQL:

  • Esegui il backup dei contenuti di /web2py/applications/<your_application>/databases/ cartella. Quindi elimina il contenuto della cartella.
  • Di nuovo sull'amministratore di web2py. Fare clic sul pulsante "amministrazione del database" per creare le tabelle nel database MySQL locale.

Avvia il tuo database MySQL nel terminale per verificare che le tabelle vuote siano state aggiunte al database:



Aggiungi dati

Vai alla posizione in cui hai salvato output.sql (dovrebbe essere il tuo desktop), quindi esegui il seguente comando per aggiungere dati a MySQL:

$ mysql -u root migration < output_after.sql

L'esecuzione completa richiederà alcuni minuti.

All'interno dell'amministratore web2py, controlla il tuo database e l'applicazione per assicurarti che i nuovi dati siano accessibili.