Seite 1 von 1

Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 17:36
von burli
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?

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 19:58
von DasIch
Ein Ansatz wäre für jede Tabelle in der Datenbank eine CSV Datei anzulegen und das Schema in einer JSON Datei zu speichern.

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 20:21
von burli
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

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 20:25
von DasIch
Strings kann man escapen.

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 20:26
von 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?

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 21:32
von BlackJack
@lunar: Ja damit kommt CSV klar. Das ist ein komplizierteres Format als viele denken. Eine Zeile = ein Datensatz gilt zum Beispiel nicht!

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Mittwoch 19. Januar 2011, 22:38
von burli
Ok, dann versuche ich mal mein Glück

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Sonntag 23. Januar 2011, 20:02
von noisefloor
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

Re: Datenbank unabhängiger Export mit SQLAlchemy?

Verfasst: Sonntag 23. Januar 2011, 20:15
von burli
Cool. Brauche ich im Aktuellen Fall zwar nicht, aber das merke ich mir mal