python Vale la pena usare sqlalchemy-migrate?



sqlalchemy filtering (3)

Utilizza invece Alembic:

http://pypi.python.org/pypi/alembic

Grazie per i commenti, modificato per aggiungere qualche ragionamento -

È sviluppato dall'autore di SQLAlchemy ed è nuovo di zecca e ben supportato. Non so abbastanza di sqlalchemy-migrare per dare un buon paragone. Ma ho fatto una rapida lettura dei documenti chiari e concisi di Alembic, poi ho ottenuto la mia migrazione autogenerata lavorando in un tempo molto breve.

Autogenerazione: non è la sua unica modalità di funzionamento, ma se si sceglie, Alembic leggerà la configurazione sqlalchemy dell'applicazione (ad esempio, le classi del modello dichiarativo che impostano tutte le tabelle, i vincoli e le mappature) e confronterà lo stato corrente attuale del database e generare uno script Python che rappresenta il delta tra i due. Passa quindi lo script al comando di aggiornamento di Alembic e lì vai, le differenze vengono risolte. Di solito è necessaria una piccola quantità di modifica dello script di migrazione a mano, e (a) solo la natura delle migrazioni e (b) qualcosa che si vuole fare comunque per assicurarsi di essere pienamente a conoscenza dei passaggi esatti che la migrazione è andando a esibirsi prima di eseguirlo.

Alambicco ha una capacità simile a quella di DVCS anche per il modo in cui vengono monitorate le tue migrazioni. Rende davvero facile tornare a qualsiasi stato passato del tuo schema db.

Ho un'applicazione web che utilizza sqlalchemy (all'interno di Pylons). Ho bisogno di modificare effi-centemente lo schema per poter cambiare la versione di produzione almeno su base giornaliera, forse di più, senza perdere i dati.

Ho giocato un po 'con sqlalchemy-migrate durante il fine settimana e direi che mi ha fatto una brutta impressione. Innanzitutto penso che non possa essere d'aiuto con la migrazione tra due motori di database ; è qualcosa che probabilmente potrebbe essere fatto con sqlalchemy da solo. Secondo, i documenti non sembrano aggiornati. Ho dovuto modificare alcune opzioni della riga di comando, come dare il percorso del repository ad ogni comando, questo potrebbe essere un bug di migrazione.

Ma la cosa peggiore è il comando "manage.py test ". Non solo modifica effettivamente il database (questo punto è chiaramente indicato nella documentazione, quindi non posso incolpare la migrazione), ma il mio primo script di migrazione ha semplicemente reso la migrazione di uno schema stupido, lasciando il db aggiornato con uno schema diverso rispetto all'originale . Ma il "manage.py test" ha appena risposto qualcosa di simile

 success !

Cioè, non ha nemmeno controllato se lo schema è stato lasciato in uno stato coerente. Quindi vale la pena utilizzare la migrazione? C'è qualche vantaggio rispetto al metodo Do It Yourself associato alle buone pratiche come proposto da S.Lott ? Esistono alternative alla migrazione di sqlalchemy che in realtà semplifica il processo di migrazione o sto solo cercando di utilizzare la migrazione con un a priori errato (quindi per favore mostrami perché è chiaramente superiore alla creazione di colonne CSV come proposto nel link sopra)?

Grazie molto!


Answer #1

Personalmente mi piace usarlo. È fantastico perché le nuove installazioni (dev, test, prod) possono essere riavviate molto facilmente. Non solo, ma fornisce un'app per l'app man mano che cresce e offre buoni punti di ingresso per le migrazioni che devono essere eseguite mentre ci si sposta dalla versione alla versione dell'applicazione. Qualcosa deve eseguire alter / etc su server di sviluppo, test e produzione.

È perfetto? No. Puoi lasciare il tuo db in cattivo stato, ma è per questo che hai versioni di sviluppo / testing / produzione.

Personalmente lo uso per eseguire il bootstrap dei miei test di unità su piloni utilizzando un db sqlite per eseguire test di unità contro, ma usiamo mysql in produzione. Quindi ci sono alcuni vantaggi cross platform db di usarlo.


Answer #2

Alembic è fuori ( http://pypi.python.org/pypi/alembic ) e gestito dall'autore di SQLAlchemy e dato il fatto che lo sviluppo di sqlalchemy-migrate sembra in stallo, con praticamente nessun impegno quest'anno ( http://code.google.com/p/sqlalchemy-migrate/source/list ), penso che non valga la pena di usarlo più , passerò il mio attuale progetto ad Alembic.

Se fosse ancora pesantemente mantenuto, sarei fiducioso sulla capacità del progetto di rimanere sincronizzato con SQLAlchemy (come prima).





sqlalchemy-migrate