Seite 1 von 1

Datenbankabfrage mit Parameter

Verfasst: Freitag 21. März 2014, 12:07
von puba
hallo,
ich möchte eine Datenbank wie folgt abfragen:
-------------------------------------------------------
sql = ("""SELECT·
»·······»······· name1, name2, apan, plz, ort·
»·······»······· FROM kunden·
»·······»······· WHERE name1 LIKE 'Abwa%' """)
cur.execute(sql)
-----------------------------------------------
Wie muss der derzeit feste Eintrag hinter dem LIKE aussehen, wenn ich an stelle von 'Abwa%'
dort einen Parameter 'data' einfügen möchte, in dem ein String hinterlegt ist.

Meine Versuche den Wert hinter dem LIKE durch ein %s mit anschließendem
cur.execute(sql, data)
zu ersetzen brachten keinen Erfolg.

Gruß
Armin

Re: Datenbankabfrage mit Parameter

Verfasst: Freitag 21. März 2014, 13:41
von BlackJack
@puba: Ob der Platzhalter im SQL '%s' heisst, hängt von der Datenbanksoftware beziehungsweise vom Python-Modul ab.

Ansonsten ist Dein Ansatz schon richtig, nur das `data` eine Sequenz mit den Werten für die Platzhalter sein muss. Also wenn `data` die Zeichenkette 'Abwa%' ist, dann muss der Aufruf so lauten:

Code: Alles auswählen

cursor.execute(sql, [data])

Re: Datenbankabfrage mit Parameter

Verfasst: Freitag 21. März 2014, 14:02
von puba
Hallo Moderator
Danke für die schnelle Hilfe, Halt geklappt.
Ich musste allerdings die beiden Hochkommata vor und nach dem %s weglassen.
Übrigens das verwendete Datenbankmodul ist psycopg2 für PostgreSQL
daher funktioniert hier das ? nicht.

Gruß
Armin