Yoyo-migrazioni è un programma di utilità database di migrazione dello schema utilizzando SQL pianura e il DB-API.
Che cosa significa-migrazioni Yoyo fanno?
Come applicazioni di database evolvono, modifiche allo schema di database sono spesso necessarie. Questi possono generalmente essere scritti come script SQL una tantum contenenti CREATE / ALTER TABLE (anche se qualsiasi script SQL o python può essere utilizzata con yoyo-migrazioni).
Yoyo-migrazioni fornisce uno strumento a riga di comando per la lettura di un elenco di tali script e la loro applicazione al database come richiesto.
Supporto database
Database PostgreSQL, MySQL e SQLite sono supportati.
Uso
Yoyo-migrazioni è solitamente invocato come script da riga di comando.
Esempi:
Leggi tutte le migrazioni da migrazioni di directory e li applica a un database PostgreSQL:
yoyo-migrate applica ./migrations/ postgres: // user: password @ localhost / Database
Migrazioni rollback precedentemente applicate a un database MySQL:
yoyo-migrate rollback ./migrations/ mysql: // user: password @ localhost / Database
Riapplicare (cioè rollback quindi applicare di nuovo) le migrazioni di un database SQLite in posizione /home/sheila/important-data.db:
yoyo-migrazione sqlite riapplicare ./migrations/: ////home/sheila/important-data.db
Per impostazione predefinita, yoyo-migrazioni inizia in un modo interattivo, che richiede per ogni file di migrazione prima di applicarlo, rendendo più facile scegliere quali migrazioni da applicare e rollback.
L'elenco migrazioni dovrebbe contenere una serie di script di migrazione. Ogni script di migrazione è un file di python (.py) contenente una serie di passaggi. Ogni passo deve comprendere una query migrazione e (opzionalmente) una query rollback. Per esempio:
#
# File: migrazioni / 0001.create-foo.py
#
step (
& Nbsp; "CREATE TABLE foo (id INT, bar VARCHAR (20), PRIMARY KEY (id))",
& Nbsp; "DROP TABLE foo",
)
Il nome di ogni file (senza l'estensione .py) viene utilizzato come identificativo per ogni migrazione. Le migrazioni sono applicati per nome del file, quindi è utile per denominare i file utilizzando una data (ad esempio '20090115-xyz.py') o con un altro numero di incremento.
yoyo-migrate crea una tabella nel database di destinazione, _yoyo_migration, per tenere traccia di quali migrazioni sono state applicate.
I passaggi possono anche prendere un optional ignore_errors argomento, che deve essere uno dei applicare, rollback, o tutti. Se nell'esempio precedente il foo tavolo potrebbe essere già stato creato da un altro mezzo, potremmo aggiungere ignore_errors = 'applicare' per il passo per consentire le migrazioni di continuare a prescindere:
#
# File: 0001.create-foo.py
#
step (
& Nbsp; "CREATE TABLE foo (id INT, bar VARCHAR (20), PRIMARY KEY (id))",
& Nbsp; "DROP TABLE foo",
& Nbsp; ignore_errors = 'a',
)
Passi possono anche essere pitone oggetti richiamabili che prendono una connessione al database come unico argomento. Per esempio:
#
# File: 0002.update_keys.py
#
def do_step (conn):
& Nbsp; cursore = conn.cursor ()
& Nbsp; cursor.execute (
& Nbsp; "INSERT INTO sysinfo"
& Nbsp; "(osname, hostname, il rilascio, la versione, arco)"
& Nbsp; "VALORI (% s,% s,% s,% s,% s% s)",
& Nbsp; os.uname ()
& Nbsp;)
step (do_step)
La sicurezza delle password
Normalmente specificare il nome utente e la password del database come parte della stringa di connessione al database nella linea di comando. Su una macchina multi-utente, gli altri utenti possono visualizzare la password del database nella lista dei processi.
Il -p o --prompt password flag causa yoyo-migrate a richiesta di una password, ignorando qualsiasi password specificata nella stringa di connessione. Questa password non sarà disponibile per gli altri utenti tramite lista dei processi del sistema.
Stringa di Connessione caching
La prima volta che si esegue yoyo-migrare su una nuova serie di migrazioni, vi verrà chiesto se si desidera memorizzare nella cache la stringa di connessione al database in un file chiamato .yoyo-migrazione nella directory migrazioni.
Questa cache è locale alla directory migrazioni, così le successive esecuzioni sullo stesso set di migrazione non hanno bisogno la stringa di connessione al database da specificare.
Ciò consente di risparmiare digitazione, evita il nome utente e la password del database che mostra in elenchi di processo e riduce il rischio di eseguire accidentalmente yoyo-migrare sul database sbagliata (cioè facendo riavviare una voce yoyo-migrazione in precedenza nella vostra storia comando quando si è trasferito in un directory diversa).
Se non si desidera che il file di cache da utilizzare, aggiungere il parametro --no-cache per le opzioni della riga di comando
Cosa c'è di nuovo in questa versione:.
- Fix per cattiva gestione rilascio 4.2.3
Cosa c'è di nuovo nella versione 4.2.1:
- Bugfix per il rilascio precedente, che ha omesso file critici.
Cosa c'è di nuovo nella versione 4.1.6:
- Supporto Windows (grazie a Peter Shinners)
Cosa c'è di nuovo nella versione 4.1.5:
- Configura gestori di registrazione in modo che le cause opzione -v uscita per andare alla console (grazie a Andrew Nelis).
- `` -v`` riga di comando non impiega più un argomento, ma può essere specificato più volte, invece (vale a dire l'uso `` -vvv`` invece di `` -v3``). `` --verbosity`` Conserva il vecchio comportamento.
Cosa c'è di nuovo nella versione 4.1.3:
- predefinito cambiato nome della tabella di migrazione del '_yoyo_migration'
Requisiti :
- Python
I commenti non trovato