Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Web2py – Migrando do SQLite para o MySQL


Recentemente, precisei converter um aplicativo CRM baseado em web2py hospedado em um servidor Apache com um back-end SQLite para MySQL. Abaixo estão os passos que funcionaram para mim. Eu criei um aplicativo de exemplo para trabalhar, se você quiser acompanhar, você pode baixar todos os arquivos aqui.

Observação:estou usando o web2py versão 2.4.7 em um ambiente Unix. Antes de começar, certifique-se de ter o SQLite instalado em seu sistema. Você pode instalar isso com pip, pip install sqlite , ou você pode pegar os arquivos binários em http://sqlite.org/download.html. Você também precisa do MySQL instalado. Se precisar de ajuda, siga os tutoriais aqui.

O banco de dados atual tem todas as tabelas web2py padrão, bem como um usuários tabela com os campos id , data_inicial e end_date :
db.define_table(
    'users',
    Field('start_date','string'), 
    Field('end_date','string')
)

Este código segue a sintaxe web2py DAL. Há 30.000 linhas de dados na tabela.

Limpeza de dados


Baixe o banco de dados SQLite mais recente do seu aplicativo. Por padrão, é o arquivo chamado storage.sqlite na pasta “/web2py/applications//databases/”. Para baixar, crie um dump de banco de dados, executando o seguinte comando no terminal:
$ sqlite3 storage.sqlite .dump > output_before.sql

Usando um editor de texto, edite o output_before.sql Arquivo:
  • Remova todas as linhas que começam com PRAGMA , BEGIN TRANSACTION , CREATE TABLE e COMMIT .
  • Remova todas as linhas pertencentes ao sqlite_sequence tabela (ou seja, DELETE FROM sqlite_sequence; ).
  • Para todos os INSERT INTO "<table_name>" VALUES(...) instruções, substitua as aspas duplas (" " ) antes e depois do <table_name> com acentos graves (` ` ) - por exemplo. INSERT INTO `table_name` VALUES(...) .

Por fim, salve o arquivo como output_after.sql em sua área de trabalho.


Configuração do MySQL


Crie o banco de dados MySQL no servidor remoto. Anote o nome do banco de dados, nome de usuário e senha. Você também pode configurar seu banco de dados localmente para teste, que usarei 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 seu aplicativo para usar o MySQL. Inicie seu administrador web2py. Editar db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')

Salve o arquivo.

Permita que o web2py inicialize o banco de dados MySQL:
  • Faça backup do conteúdo de /web2py/applications/<your_application>/databases/ pasta. Em seguida, exclua o conteúdo da pasta.
  • De volta ao administrador web2py. Clique no botão "administração de banco de dados" para criar as tabelas em seu banco de dados MySQL local.

Inicie seu banco de dados MySQL no terminal para verificar se as tabelas vazias foram adicionadas ao banco de dados:


Adicionar dados


Navegue até onde você salvou output.sql (deve ser sua área de trabalho) e execute o seguinte comando para adicionar dados ao MySQL:
$ mysql -u root migration < output_after.sql

Isso levará alguns minutos para ser totalmente executado.

Dentro do administrador web2py, verifique seu banco de dados e aplicativo para garantir que os novos dados estejam acessíveis.