Mysql
 sql >> Base de données >  >> RDS >> Mysql

Web2py – Migrer de SQLite vers MySQL

J'ai récemment eu besoin de convertir une application CRM basée sur web2py hébergée sur un serveur Apache avec un backend SQLite vers MySQL. Voici les étapes qui ont fonctionné pour moi. J'ai créé un exemple d'application avec lequel travailler si vous souhaitez suivre, vous pouvez télécharger tous les fichiers ici.

Veuillez noter :j'utilise web2py version 2.4.7 sur un environnement Unix. Avant de commencer, assurez-vous que SQLite est installé sur votre système. Vous pouvez l'installer avec pip, pip install sqlite , ou vous pouvez récupérer les fichiers binaires sur http://sqlite.org/download.html. Vous devez également installer MySQL. Si vous avez besoin d'aide, suivez les tutoriels ici.

La base de données actuelle a toutes les tables web2py par défaut ainsi qu'un utilisateurs table avec les champs id , date_début , et end_date :

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

Ce code suit la syntaxe DAL de web2py. Il y a 30 000 lignes de données dans le tableau.


Nettoyage des données

Téléchargez la dernière base de données SQLite de votre application. Par défaut, il s'agit du fichier nommé storage.sqlite sous le dossier « /web2py/applications//databases/ ». Pour télécharger, créez un vidage de base de données en exécutant la commande suivante dans le terminal :

$ sqlite3 storage.sqlite .dump > output_before.sql

À l'aide d'un éditeur de texte, modifiez le output_before.sql fichier :

  • Supprimer toutes les lignes commençant par PRAGMA , BEGIN TRANSACTION , CREATE TABLE et COMMIT .
  • Supprimez toutes les lignes relatives à la sqlite_sequence table (c'est-à-dire DELETE FROM sqlite_sequence; ).
  • Pour tous les INSERT INTO "<table_name>" VALUES(...) instructions, remplacez les guillemets doubles (" " ) avant et après le <table_name> avec des backticks (` ` ) - par exemple. INSERT INTO `table_name` VALUES(...) .

Enfin, enregistrez le fichier sous output_after.sql sur votre bureau.



Configuration MySQL

Créez la base de données MySQL sur le serveur distant. Notez le nom de la base de données, le nom d'utilisateur et le mot de passe. Vous pouvez également configurer votre base de données localement pour les tests, que j'utiliserai pour ce tutoriel :

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

Configurez votre application pour utiliser MySQL. Lancez votre administrateur web2py. Modifier db.py :

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

Enregistrez le fichier.

Autoriser web2py à initialiser la base de données MySQL :

  • Sauvegarder le contenu de /web2py/applications/<your_application>/databases/ dossier. Supprimez ensuite le contenu du dossier.
  • Retour sur l'admin de web2py. Cliquez sur le bouton "administration de la base de données" pour créer les tables dans votre base de données MySQL locale.

Lancez votre base de données MySQL dans le terminal pour vous assurer que les tables vides ont été ajoutées à la base de données :



Ajouter des données

Accédez à l'emplacement où vous avez enregistré output.sql (devrait être votre bureau), puis exécutez la commande suivante pour ajouter des données à MySQL :

$ mysql -u root migration < output_after.sql

Cela prendra quelques minutes pour s'exécuter complètement.

Dans l'admin web2py, vérifiez votre base de données et votre application pour vous assurer que les nouvelles données sont accessibles.