Acces DB

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Gerhardus
User
Beiträge: 42
Registriert: Dienstag 31. Dezember 2013, 01:59

Hallo,
vielleicht kann mir jemand diese Frage beantworten:
In einem langen sql abfragestring möchte ich in einer Havingklausel 2 unterschiedliche Parameter mit AND verknüpft sind eingeben.
Mit einem parameter funktioniert das problemlos, aber mit 2?
p1=10
p2="B"
z.B.: HAVING ((ID>?) AND (Mitg=?) )\

cursor.execute(sql,p1,p2) ? (funktioniert nicht)
oder ist das nicht möglich?
Bitte um Antwort, danke
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das geht, du musst die Parameter als Sequenz angeben:

Code: Alles auswählen

cursor.execute(sql, (p1,p2))
Und in Zukunft statt proaischem "funktioniert nicht" die garantiert aufgetretene, konkrete Fehlermeldung posten.
Gerhardus
User
Beiträge: 42
Registriert: Dienstag 31. Dezember 2013, 01:59

Super,Danke!!!
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Wichtig ist dabei auch noch, dass wenn du nur einen Wert übergeben willst, musst du als Paramter für execute trotzdem ein Tupel verwenden. Also

Code: Alles auswählen

cursor.execute(sql, (p1,))
Gerhardus
User
Beiträge: 42
Registriert: Dienstag 31. Dezember 2013, 01:59

Danke, bei einem parameter habe ich die Varaible zu einer Llist gemeacht. Ist natürlich im execute befehl viel besser.
Antworten