prega di notare che questo non è corretto e più complicata risposta
Il modo giusto è quello di utilizzare index.create
come è stato detto here.
Prima di tutto assicurarsi di disporre dell'ultima istantanea del database e di ripristinare il database da questa istantanea.
Per progetti di medie e grandi dimensioni (quelli che potrebbero essere necessari per supportare più versioni contemporaneamente e sono installati su più ambienti), esiste una procedura speciale che fa parte del ciclo di vita della gestione del database chiamata "migrazione del database". Le migrazioni DB includono modifiche allo schema esistente. SQLAlchemy non supporta la migrazione fuori dalla scatola.
ci sono due SQLAlchemy strumenti di migrazione di database compatibili disponibili:
Tutte le informazioni e collegamenti a questi strumenti nella pagina di documentazione SQLAlchemy: Altering Schemas through Migrations.
Tuttavia, se si sta lavorando su un progetto di piccole dimensioni, suggerire di eseguire manualmente la query DDL ALTER TABLE dall'utilità della riga di comando del database o tramite connection.execute() nello script python.
Nell'applicazione di produzione su cui sto lavorando in questo momento, supportiamo solo una versione più recente dell'applicazione.Per ogni modifica dello schema del database che facciamo le seguenti operazioni:
- fare una fotografia istantanea del database di produzione
- carico questa istantanea su ambiente di sviluppo
modulo di modello di dati sqlalchemy
- aggiornamento
- preparare ed eseguire alter interrogazione tavolo e salvare questa query per un successivo
- apportare altre modifiche relative al codice
- test eseguiti su ambiente dev
- distribuire ultima versione del codice per la produzione
- alterano tavolo sulla produzione
Anche io sto usando il seguente trucco per generare creare query tavolo/index: indico la mia domanda di marca nuovo database, abilitare la registrazione di query SQLAlchemy ed eseguire metadata.create_all()
- così nei registri (o STDOUT) vedo creare query generata da sqlalchemy
a seconda del sistema di database che si sta utilizzando query di creazione dell'indice sarà po 'diverso. query standard sarebbe simile a questa:
create index targets_i on targets(url);
scusa, questa risposta è errata. ALTER TABLE non è utilizzato per gli indici. SQLAlchemy supporta "CREATE INDEX" molto direttamente usando 'Index.create()', così come con il costrutto DDL 'CreateIndex' per situazioni di scripting più elaborate. Non c'è bisogno di prendere l'output "create_all()" o qualcosa del genere. – zzzeek
Grazie per il punto. Sono d'accordo: ho descritto come implementare e supportare l'approccio chiesto in questione. E completamente dimenticato di 'index.create' facile e veloce. – vvladymyrov