Frage

Wie verschiebt man in einer Umgebung mit mehreren Datenbanken alle Daten von einer Datenbank in eine andere?

Die Einstellungen sehen so aus:

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'
    }
}

Gibt es dafür eine einfache Lösung/App?Obwohl eine Migration in eine Richtung ausreicht, da es Dutzende von Modellen und Objekten mit komplexen Fremdschlüsseln und Viele-zu-Viele-Verbindungen gibt, löst das Durchlaufen von Modellen und Objekten und deren Speichern in einem anderen mein Problem nicht.

loaddata schlägt ebenfalls fehl, da die Objekterstellung Signale verwendet, um andere Objekte zu erstellen, und dadurch eindeutige Schlüssel durcheinander gebracht werden.

Die Verwendung von SQL-Dumps ist nicht einmal trivial, da die Backends unterschiedlich sind.Ich habe es versucht, es ist mir nicht gelungen, aus meiner SQLite3-Datenbank psql-Dumps zu erstellen, die keine Fremdschlüssel durcheinander bringen.

Ich brauche also eine Lösung, die Daten von einer Datenbank in eine andere lädt, aber keine Signale sendet und auch mit Fremdschlüsseln funktioniert.Aber ich konnte nichts finden, was dies tut.

War es hilfreich?

Lösung

Endlich habe ich es geschafft, das Problem zu lösen.

Ich habe Tabellen mit erstellt

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

Dumps laden mit loaddata funktionierte aufgrund von Integritätsproblemen nicht.(Zum Beispiel defekte Fremdschlüsseleinschränkungen)

Also musste ich meine Tabellen ändern.Ich habe die fehlerhaften Einschränkungen entfernt und konnte dann losrennen loaddata ohne Probleme.

Allerdings war meine Datenbank natürlich immer noch kaputt, da ich ein paar Einschränkungen aufgegeben habe.Deshalb musste ich meine Tabellen einfach noch einmal ändern, mit psql Hülse.

pgAdmin war praktisch, da relevante Dump-Abfragen auf einer benutzerfreundlichen Oberfläche separat für jede unterschiedliche Einschränkung angezeigt werden.

Andere Tipps

Ich würde nur ein Python-Skript für Migrieren Sie die Instanz von einer Datenbank in ein anderes , führen Sie dieses Skript mit Django-Extensions Runcript

zum Beispiel

generasacodicetagpre.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top