ich habe folgendes Problem: Eigentlich bin ich mit meiner Anwendung so gut wie fertig, ich habe eine Datenbankanwendung mit PyQt4 programmiert, die auf eine PostgreSQL Datenbank zugreift und von Kontinent über Land zu den dortigen Messstationen für Klimadatenmessungen navigiert.
Nachdem man dann in einem zweiten Formular, Messreihe, Anfangs- und Enddatum ausgewählt hat anhand von Combo Boxen werden diese Werte über Signale übergeben und in Klassenvariablen gespeichert.
Jetzt möchte ich in der letzten Methode die Klassenvariablen übernehmen und die Werte über Platzhalter meinem SQL Befehl übergeben, hierfür habe ich folgeneden Code:
Code: Alles auswählen
def getExport(self):
export = []
station = self.stationList
von = DateTime.strptime(self.vonDate, 'DD.MM.YYYY')
bis = self.bisDate
row = self.row
liste = [] ## Stringliste für Platzhalter in SQL-Befehl für endgültigen Export
for i in station:
if i[0] == None:
continue
else:
liste.append("m."+i[0])
values = ", ".join(liste)
self.cur.execute("SELECT m.datum, m.zeit, %s FROM sicht m, reihe r WHERE r.intervall like '%s' AND m.datum BETWEEN '%s' AND '%s';" % (values, row, von, bis))
ex = self.cur.fetchall()
print ex
return ex
Den normalen String als Wertübergabe akzeptiert pgdb (ich arbeite mit der pyGreSQL Schnittstelle) nicht und es gibt einen DB-Error ähnlich "cannot handle <class PyQt4.QtCore.QString instance at ...>, andere QString Werte hat die Anwendung jedoch als Wertübergabe für SQL-Befehle immer akzeptiert, dh. am QString kanns nicht liegen (das habe ich geprüft!). Ich denke, PostgreSQL hat Probleme das Datum im Statement abzugleichen und braucht einen richtig formatierten Wert. Wieso Python jetzt die Funktion nicht erkennt wundert mich, ich habe sie importiert!
Bin sehr dankbar, wenn mir jemand weiterhelfen kann,
Viele Grüße,
Marion