Datenbank unabhängiger Export mit SQLAlchemy?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ist es möglich, mit SQLAlchemy Tabellen datenbankunabhänig zu exportieren und wieder zu importieren? Zum Thema "export" verrät die Doku leider nicht viel.

Wenn SQLAlchemy selbst das nicht kann, wie könnte man das machen?
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Ein Ansatz wäre für jede Tabelle in der Datenbank eine CSV Datei anzulegen und das Schema in einer JSON Datei zu speichern.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Das Schema selbst brauche ich eigentlich nicht. Das wird von den Model erzeugt. CSV ist problematisch, weil auch Texte mit \n, " und , usw gespeichert werden. Müsste man ein Zeichen nehmen, was garantiert nicht vorkommt
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Strings kann man escapen.
lunar

@burli: Dann serialisiere halt auch den Inhalt der Tabellen in ein Format, dass solche Daten verarbeiten kann, z.B. JSON oder irgendein XML-Format. Gerade wenn Du auf das Schema keine Rücksicht zu nehmen brauchst, ist das doch nicht weiter schwer ...

@DasIch: Kommt CSV wirklich mit Zeilenumbrüchen in einzelnen Zellen klar?
Zuletzt geändert von lunar am Mittwoch 19. Januar 2011, 21:48, insgesamt 1-mal geändert.
BlackJack

@lunar: Ja damit kommt CSV klar. Das ist ein komplizierteres Format als viele denken. Eine Zeile = ein Datensatz gilt zum Beispiel nicht!
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ok, dann versuche ich mal mein Glück
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

eine mögliche Lösung, die ich im Buch "Essential SQLAlchemy" gesehen haben:

Code: Alles auswählen

import ...
meta1 = MetaData('postgres://...', reflect=True)
meta2 = MetaData('mysql://...')
for table in meta1.table_iterator():
    table.tometadata(meta2)
meta2.create_all()
So hat man das DB Schema übertragen, Daten sind ja dann kein Problem mehr. ;-)

BTW: Das Buch basiert auf SA 0.4.x

Gruß, noisefloor
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Cool. Brauche ich im Aktuellen Fall zwar nicht, aber das merke ich mir mal
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Antworten