Nedávno jsem potřeboval převést aplikaci CRM založenou na web2py hostovanou na serveru Apache s SQLite backendem na MySQL. Níže jsou uvedeny kroky, které pro mě fungovaly. Vytvořil jsem vzorovou aplikaci, se kterou můžete pracovat, pokud ji chcete sledovat, všechny soubory si můžete stáhnout zde.
Poznámka:Používám web2py verze 2.4.7 v prostředí Unix. Před spuštěním se ujistěte, že máte v systému nainstalovaný SQLite. Můžete to nainstalovat pomocí pip,
pip install sqlite
, nebo si můžete binární soubory stáhnout na http://sqlite.org/download.html. Musíte mít také nainstalované MySQL. Pokud potřebujete pomoc, postupujte podle výukových programů zde.
Aktuální databáze obsahuje všechny výchozí web2py tabulky a také uživatele tabulka s poli id , počáteční_datum a end_date :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Tento kód se řídí syntaxí web2py DAL. V tabulce je 30 000 řádků dat.
Čištění dat
Stáhněte si nejnovější databázi SQLite vaší aplikace. Ve výchozím nastavení je to soubor s názvem storage.sqlite ve složce „/web2py/applications/
$ sqlite3 storage.sqlite .dump > output_before.sql
Pomocí textového editoru upravte output_before.sql soubor:
- Odstraňte všechny řádky, které začínají
PRAGMA
,BEGIN TRANSACTION
,CREATE TABLE
aCOMMIT
. - Odstraňte všechny řádky týkající se
sqlite_sequence
tabulka (tj.DELETE FROM sqlite_sequence;
). - Pro všechny
INSERT INTO "<table_name>" VALUES(...)
příkazy, nahraďte dvojité uvozovky (" "
) před a za<table_name>
se zpětným zaškrtnutím (` `
) - např.INSERT INTO `table_name` VALUES(...)
.
Nakonec soubor uložte jako output_after.sql na ploše.
Nastavení MySQL
Vytvořte databázi MySQL na vzdáleném serveru. Poznamenejte si název databáze, uživatelské jméno a heslo. Můžete také lokálně nastavit svou databázi pro testování, kterou budu používat pro tento tutoriál:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Nakonfigurujte svou aplikaci tak, aby používala MySQL. Spusťte svého správce web2py. Upravte db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Uložte soubor.
Povolit web2py inicializovat databázi MySQL:
- Zálohujte obsah
/web2py/applications/<your_application>/databases/
složka. Poté smažte obsah složky. - Zpět na web2py admin. Kliknutím na tlačítko „správa databáze“ vytvoříte tabulky ve vaší místní databázi MySQL.
Spusťte databázi MySQL v terminálu a zkontrolujte, zda byly do databáze přidány prázdné tabulky:
Přidat data
Přejděte na místo, kam jste uložili output.sql (měl by to být váš desktop), poté spusťte následující příkaz pro přidání dat do MySQL:
$ mysql -u root migration < output_after.sql
Úplné provedení bude trvat několik minut.
V rámci správce web2py zkontrolujte databázi a aplikaci, abyste se ujistili, že jsou nová data dostupná.