Datenbankabfrage und Weiterverarbeitung der Daten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
KleinErna
User
Beiträge: 2
Registriert: Dienstag 8. Oktober 2019, 07:31

Hallo in die Runde!

Vorab, ich bin ein blutiger Python-Anfänger mit sehr, sehr wenig Erfahrung auf dem Gebiet.

Und nun zu meinem Problem:
Ich soll eine Datenbankabfrage machen und diese abgefragten 10-Minuten-Werte dann fortlaufend in eine Datei schreiben (Tabelle), welche am Ende des Tages als eine Date gesehen wird. Neuer Tag - neue Datei.
Die Verbindung zur Oracle Datenbank konnte ich herstellen und die Daten kann ich auch abfragen. Wie lege ich diese Daten denn nun in Tabellenform in eine Datei?

Hier ein Beispiel:

2019 06 11 00 00 00 59.8 965.6 11.5
2019 06 11 00 10 00 58.7 965.4 11.7
2019 06 11 00 20 00 60.3 965.3 11.8
2019 06 11 00 30 00 64.4 965.3 11.6
2019 06 11 00 40 00 66.0 965.2 11.4
2019 06 11 00 50 00 68.5 964.8 11.2
2019 06 11 01 00 00 67.1 964.8 11.5
2019 06 11 01 10 00 60.0 964.5 12.2
2019 06 11 01 20 00 60.5 964.4 13.2
2019 06 11 01 30 00 54.3 964.2 13.4

Kann mir da jemand helfen? Ich habe echt überhaupt gar keine Ahnung.

Lieben Dank!
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Benutzeravatar
__blackjack__
User
Beiträge: 14047
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@KleinErna: Was ist denn mit „Tabelle“ gemeint? Ist eventuell das `csv`-Modul aus der Standardbibliothek etwas brauchbares?

Die Zeitstempel sehen auch komisch aus. Das sollte ja eigentlich *ein* Wert sein, den würde ich ja lesbarer formatieren und am besten auch in einem Standardformat, also beispielsweise "2019-06-11T00:00:00".
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
KleinErna
User
Beiträge: 2
Registriert: Dienstag 8. Oktober 2019, 07:31

__blackjack__ hat geschrieben: Donnerstag 24. Oktober 2019, 10:47 @KleinErna: Was ist denn mit „Tabelle“ gemeint? Ist eventuell das `csv`-Modul aus der Standardbibliothek etwas brauchbares?

Die Zeitstempel sehen auch komisch aus. Das sollte ja eigentlich *ein* Wert sein, den würde ich ja lesbarer formatieren und am besten auch in einem Standardformat, also beispielsweise "2019-06-11T00:00:00".
Hallo __blackjack__ ,
nein, nein meine Daten frage ich wie folgt ab:

Code: Alles auswählen

if __name__ == "__main__":
  t_query10 = ruf_query10("2019-10-07 00:00:00", "2019-10-08 00:00:00")
  print(t_query10)
Die eingangs angegeben Zeitstempel sollten das Ergebnis darstellen. Dahinter einige Parameter, wie Feuchte, Druck und Temp. Leider wird mir das Ergebnis wie folgt ausgegeben:
0: ['2019-10-07 00:10:00', '1019.4', '-0.5', '87.5'], 1: ['2019-10-07 00:20:00', '1019.4', '-0.2', '87.7'], 2: ['2019-10-07 00:30:00', '1019.4', '0.0', '86.1'], 3: ['2019-10-07 00:40:00', '1019.5', '0.0', '85.3'], 4: ['2019-10-07 00:50:00', '1019.5', '0.2', '85.3'], 5: ['2019-10-07 01:00:00', '1019.5', '-0.2', '86.8'], 6: ['2019-10-07 01:10:00', '1019.5', '0.0', '87.0'], 7: ['2019-10-07 01:20:00', '1019.7', '-0.2', '85.4'], 8: ['2019-10-07 01:30:00', '1019.7', '0.0', '86.6'], 9: ['2019-10-07 01:40:00', '1019.7', '-0.1', '85.7'], 10: ['2019-10-07 01:50:00', '1019.7', '0.0', '85.5'], 11: ['2019-10-07 02:00:00', '1019.8', '-0.2', '86.1'],

Ich hätte gern jeden 10-Minuten-Wert untereinander.
Da ich es auch gern in einer Textdatei festhalten möchte, habe ich noch folgende Ergänzung vorgenommen:

Code: Alles auswählen

if __name__ == "__main__":
  t_query10 = ruf_query10("2019-10-07 00:00:00", "2019-10-08 00:00:00")
  #print(t_query10)
  f = open("testfile01.txt", "w+")
  f.write(t_amda10)
 f.close()
Aber ich bekomme nur eine Fehlermeldung:
TypeError: write() argument must be str, not tuple
Was mache ich falsch?

Viele Grüße
Anne
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du musst über deine Ergebnisse iterieren (mit for), und dann solltest du Zeilen bekommen, und zwar als Listen. Die kannst du einem csv Writer aus dem gleichnamigen Modul vorwerfen.
Sirius3
User
Beiträge: 18270
Registriert: Sonntag 21. Oktober 2012, 17:20

Woher kommt denn `ruf_query10`? Der Funktionsname ist nicht gut, um zu verstehen, was da passieren soll. Warum liefert diese Funktion ein Wörterbuch mit trivialen Schlüsseln zurück?

`t_query10` ist genauso nichtssagend. Präfixe wie `t_` sind generell überflüssig, da sie nichts zum Verständnis beitragen. Später nennst Du das dann `t_amda10`, wo jemand dann die Abkürzunge amda raten müßte. Nenne Variablen so, das sie keine Abkürzungen enthalten.
"w+" ist für Text-Dateien garantiert der falsche Modus. Entweder "a" für anhängen oder "w" für neu schreiben.
Dateien die man öffnet, muß man auch wieder schließen, am besten mit dem with-Statement.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 2.

Die Fehlermeldung behauptet, dass Du versuchst Tuple zu schreiben, ich sehe aber weit und breit keine Tuple. Poste den wirklichen Code und den gesamten Traceback, sonst müssen wir hier raten, was passiert, und das klappt nicht immer.

Zum Problem: Du willst tabellarische Daten in eine Datei schreiben. Dann nimm das csv-Modul, das ist dafür gedacht.
Antworten