sql >> Databasteknik >  >> RDS >> Mysql

Web2py – Migrera från SQLite till MySQL

Jag behövde nyligen konvertera en web2py-baserad CRM-app på en Apache-server med en SQLite-backend till MySQL. Nedan är stegen som fungerade för mig. Jag skapade en exempelapplikation att arbeta med om du vill följa med, du kan ladda ner alla filer här.

Observera:Jag använder web2py version 2.4.7 i en Unix-miljö. Innan du börjar, se till att du har SQLite installerat på ditt system. Du kan installera detta med pip, pip install sqlite , eller så kan du hämta de binära filerna på http://sqlite.org/download.html. Du behöver också MySQL installerat. Om du behöver hjälp, följ handledningarna här.

Den aktuella databasen har alla standardweb2py-tabeller samt en användare tabell med fälten id , startdatum och slutdatum :

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

Denna kod följer web2py DAL-syntaxen. Det finns 30 000 rader med data i tabellen.


Datarensning

Ladda ner din applikations senaste SQLite-databas. Som standard är det filen som heter storage.sqlite under mappen "/web2py/applications//databaser/". För att ladda ner, skapa en databasdump genom att köra följande kommando i terminalen:

$ sqlite3 storage.sqlite .dump > output_before.sql

Använd en textredigerare och redigera output_before.sql fil:

  • Ta bort alla rader som börjar med PRAGMA , BEGIN TRANSACTION , CREATE TABLE och COMMIT .
  • Ta bort alla rader som hänför sig till sqlite_sequence tabell (dvs. DELETE FROM sqlite_sequence; ).
  • För alla INSERT INTO "<table_name>" VALUES(...) satser, ersätt de dubbla citattecken (" " ) före och efter <table_name> med backticks (` ` ) - t.ex. INSERT INTO `table_name` VALUES(...) .

Slutligen, spara filen som output_after.sql på skrivbordet.



MySQL-inställningar

Skapa MySQL-databasen på fjärrservern. Notera databasens namn, användarnamn och lösenord. Du kan också ställa in din databas lokalt för testning, som jag kommer att använda för denna handledning:

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

Konfigurera din applikation för att använda MySQL. Starta din web2py-administratör. Redigera db.py :

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

Spara filen.

Tillåt web2py att initiera MySQL-databasen:

  • Säkerhetskopiera innehållet i /web2py/applications/<your_application>/databases/ mapp. Ta sedan bort innehållet i mappen.
  • Tillbaka på web2py-administratören. Klicka på knappen "databasadministration" för att skapa tabellerna i din lokala MySQL-databas.

Starta din MySQL-databas i terminalen för att kontrollera att de tomma tabellerna har lagts till i databasen:



Lägg till data

Navigera till där du sparade output.sql (bör vara ditt skrivbord), kör sedan följande kommando för att lägga till data till MySQL:

$ mysql -u root migration < output_after.sql

Detta kommer att ta några minuter att köra helt.

Inom web2py-administratören, kontrollera din databas och applikation för att se till att den nya informationen är tillgänglig.



  1. Hur man skapar och tar bort databaser och tabeller i PostgreSQL

  2. Oracle lag mellan commit och select

  3. Skapa en webbapp från grunden med Python Flask och MySQL:Del 3

  4. mysqli::mysqli():(HY000/2002):Kan inte ansluta till den lokala MySQL-servern via uttaget 'MySQL' (2)