Domanda

su un ambiente multi-database, come spostare tutti i dati da un database a un altro?

Impostazioni Sembra questo:

DATABASES = {
    'default': {},
    'users': {
        'NAME': 'user_data',
        'ENGINE': 'django.db.backends.sqlite3',
        'USER': 'user',
        'PASSWORD': 'superS3cret'
    },
    'customers': {
        'NAME': 'customer_data',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'cust',
        'PASSWORD': 'veryPriv@ate'
    }
}
.

C'è qualche soluzione / app semplice per farlo?Sebbene sia sufficiente una migrazione a senso unico, poiché ci sono dozzine di modelli e oggetti con chiavi stranieri complessi e connessioni a molti a molti, iterazioni su modelli e oggetti e salvarli in un altro non risolvono il mio problema.

loaddata non riesce anche in caso di creazione dell'oggetto utilizza i segnali per creare oggetti di novità e questo incasinare tasti univoci.

L'utilizzo di Dumps SQL non è banale, poiché i backend sono diversi.Ho provato questo, non ho potuto riuscire a creare Dumps PSQL dal mio database SQLite3, che non rovina le chiavi straniere.

Quindi ho bisogno di una soluzione, che carica i dati da un database a un altro, ma non invia anche segnali e funziona anche con tasti estranei.Ma non ho potuto trovare nulla che faccia questo.

È stato utile?

Soluzione

Finalmente sono riuscito a risolverlo.

Ho creato tabelle usando

manage.py syncdb --all
manage.py migrate --fake
.

Loading Dumps con loaddata non ha funzionato a causa di problemi di integrità.(Vincoli chiave stranieri rotti, ad esempio)

Quindi ho dovuto modificare i miei tavoli.Ho rimosso i vincoli rotti, e poi ho potuto correre loaddata senza problemi.

Tuttavia, ovviamente il mio database era ancora rotto da quando ho lasciato cadere un paio di vincoli.Pertanto, dovevo semplicemente modificare di nuovo le mie tabelle, usando psql Shell.

PGAdmin è stato utile, poiché mostra le query Dump pertinenti su un'interfaccia user-friendly, separatamente per ciascun vincolo.

Altri suggerimenti

Scriviamo solo uno script Python per Migrare l'istanza da un database a un altro , eseguire quello script usando django-estensioni runscript

Ad esempio

# Move Foo table data from one to another
for each_foo in Foo.objects.using("users").all():
  # _create foo instance in customer_data
  foo_obj, status = Foo.objects.using("customers").get_or_create(
                                            foo_name=each_foo.foo_name, 
                                            foo_code=each_foo.foo_code)
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top