Daten aus PostgreSQl datenbank exportieren (Syntax fragen)

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Hy,

also ich möchte aus meiner PosgreSQL-Datenbank via psycopg2 in einem kleinen Script Daten exportieren.

Ich bekomme Abertausende Spalten ausgespuckt, wies auch richtig ist. Wie erkläre ich der Abfrage, dass sie eine Zeile nach der anderen durchmacht und die in Variablen schreibt? Reicht es wenn ich eine Schleife baue, in die einen Zähler einbaue und dann auf die Zeile der Datenbank verweise. Wenn ja wie geht das?
(Ein gutes Tutorial wie ich Datenbanken zeile für Zeile auslese und in Variablen stecke würde mir schon reichen)


Vorgang soll folgender werden:

alte Endddatei löschen.

Textdatei auslesen und komplett in andere Endtextdatei schreiben

1. abfrage. SQLZeile Lesen --> Nach bestimmten If-Abfragen in einer bestimmten reihenfolge zusammenschmeißen --> Daten in Endtexdatei hinzufügen.

2. abfrage. SQLZeile Lesen --> Nach bestimmten If-Abfragen in einer bestimmten reihenfolge zusammenschmeißen --> Daten in Endtexdatei hinzufügen.




Ich weiß, es ist wieder einmal eine dumme Frage, aber ich brauche einfach mal nen Ansatz um rein zu kommen.

Zeilenumbrüche und Tab und so das ganze ausführliche Programm in Form von Quelltext der vielleicht bei euch einen ganz anderen Zweck erfüllt mir aber trozdem helfen kann, oder richtig guten Tutorials die nicht dann aufhören, wenn man zu den Bereichen kommt die ich brauche, so wie die Meisten.

Danke schon im Vorraus und schönes Wochende.

Gruß BoOnOdY
BlackJack

Den zweiten Punkt habe ich nicht ganz verstanden.

Ansonsten ist das iterieren über Ergebnisse von SQL-Abfragen kein Problem. Der Cursor über den die Abfrage gemacht wurde ist "iterable". Wenn beide Abfragen die gleiche Anzahl von Ergebniszeilen haben, kann man mit `izip()` auch in einer einzigen Schleife über beide gehen. Die Ergebniszeilen werden als Tupel geliefert.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BoOnOdY hat geschrieben:(Ein gutes Tutorial wie ich Datenbanken zeile für Zeile auslese und in Variablen stecke würde mir schon reichen)
Hallo BoOnOdY!

Vielleicht kannst du damit schon mal etwas anfangen:
http://www.python-forum.de/post-74731.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

hey das hat mir schon sehr viel geholfen =) jetzt habe ich nur noch eine Frage:

Wie kann ich eine Liste genau so wie den Cursor verwenden? Ich will einfach alles in der Reihenfolge wie es die Datenbank da zeile für Zeile reinschmeißen und genau so rausbekommen.

Weil ich will nur 1ne Abfrage machen aber sie 2 mal benutzen in einem Script, wegen der Zeiterspaarnis. Also in 2 Schleifen.

Außerdem möchte ich gerne Elemente in einer String hinzufügen.
quasi:

Namen=Hans
Namen add Wolfgang
print name
HansWolfgang

Gruß BoOnOdY
BlackJack

Was meinst Du mit Liste genauso wie einen Cursor verwenden? Wenn Du das Ergebnis auf einmal in eine Liste einlesen willst, kannst Du die `fetchall()`-Methode vom Cursor verwenden.

Alternativ könntest Du auch versuchen die beiden Schleifen zu einer zusammen zu fassen, dann spart man eventuell Speicher weil das Ergebnis der SQL-Anfrage nicht komplett im Speicher gehalten werden muss.

Die Frage zu den Zeichenketten habe ich nicht verstanden. Oder so wie ich sie verstanden habe, ist das so trivial, dass Du vielleicht nochmal das Tutorial durcharbeiten solltest.
BoOnOdY
User
Beiträge: 112
Registriert: Samstag 22. Juli 2006, 13:38

Sie war so trivial ^^
Aber ich muss es eh in 2 Schritten machen habe ich gesehen, weil ich 2 unterschiedliche Sortierungen benötige, von daher ist alles okay so wie es im Mom ist=

Vielen Dank mein Problem ist gelöst.

Gruß BoOnOdY
Antworten