Ich musste kürzlich eine web2py-basierte CRM-App, die auf einem Apache-Server mit einem SQLite-Backend gehostet wird, in MySQL konvertieren. Unten sind die Schritte, die für mich funktioniert haben. Ich habe eine Beispielanwendung erstellt, mit der Sie arbeiten können. Sie können alle Dateien hier herunterladen.
Bitte beachten Sie:Ich verwende web2py Version 2.4.7 in einer Unix-Umgebung. Bevor Sie beginnen, stellen Sie sicher, dass SQLite auf Ihrem System installiert ist. Sie können dies mit pip installieren, pip install sqlite
, oder Sie können die Binärdateien unter http://sqlite.org/download.html herunterladen. Außerdem muss MySQL installiert sein. Wenn Sie Hilfe benötigen, folgen Sie den Tutorials hier.
Die aktuelle Datenbank enthält alle standardmäßigen web2py-Tabellen sowie users Tabelle mit den Feldern id , start_date und end_date :
db.define_table(
'users',
Field('start_date','string'),
Field('end_date','string')
)
Dieser Code folgt der web2py DAL-Syntax. Die Tabelle enthält 30.000 Datenzeilen.
Datenbereinigung
Laden Sie die neueste SQLite-Datenbank Ihrer Anwendung herunter. Standardmäßig ist dies die Datei mit dem Namen storage.sqlite im Ordner „/web2py/applications/
$ sqlite3 storage.sqlite .dump > output_before.sql
Bearbeiten Sie mit einem Texteditor die Datei output_before.sql Datei:
- Entfernen Sie alle Zeilen, die mit
PRAGMA
beginnen ,BEGIN TRANSACTION
,CREATE TABLE
undCOMMIT
. - Entfernen Sie alle Zeilen, die sich auf
sqlite_sequence
beziehen Tabelle (d.h.DELETE FROM sqlite_sequence;
). - Für alle
INSERT INTO "<table_name>" VALUES(...)
Anweisungen, ersetzen Sie die doppelten Anführungszeichen (" "
) vor und nach<table_name>
mit Backticks (` `
) - z.B.INSERT INTO `table_name` VALUES(...)
.
Speichern Sie die Datei schließlich als output_after.sql auf Ihrem Desktop.
MySQL-Setup
Erstellen Sie die MySQL-Datenbank auf dem Remote-Server. Notieren Sie sich den Datenbanknamen, den Benutzernamen und das Passwort. Sie können Ihre Datenbank auch lokal zum Testen einrichten, was ich für dieses Tutorial verwenden werde:
$ mysql.server start
$ mysql -u root -p
Enter password:
mysql> create database migration;
Query OK, 1 row affected (0.03 sec)
mysql> exit;
Konfigurieren Sie Ihre Anwendung für die Verwendung von MySQL. Starten Sie Ihren web2py-Admin. Bearbeiten Sie db.py :
db = DAL('mysql://<mysql_user>:<mysql_password>@localhost/<mysql_database>')
Speichern Sie die Datei.
Web2py erlauben, die MySQL-Datenbank zu initialisieren:
- Sichern Sie den Inhalt von
/web2py/applications/<your_application>/databases/
Mappe. Löschen Sie dann den Inhalt des Ordners. - Zurück zum web2py-Admin. Klicken Sie auf die Schaltfläche „Datenbankverwaltung“, um die Tabellen in Ihrer lokalen MySQL-Datenbank zu erstellen.
Starten Sie Ihre MySQL-Datenbank im Terminal, um zu überprüfen, ob die leeren Tabellen zur Datenbank hinzugefügt wurden:
Daten hinzufügen
Navigieren Sie zu dem Speicherort, an dem Sie output.sql gespeichert haben (sollte Ihr Desktop sein) und führen Sie dann den folgenden Befehl aus, um Daten zu MySQL hinzuzufügen:
$ mysql -u root migration < output_after.sql
Die vollständige Ausführung dauert einige Minuten.
Überprüfen Sie im web2py-Adminbereich Ihre Datenbank und Anwendung, um sicherzustellen, dass auf die neuen Daten zugegriffen werden kann.