Datenbankabfrage mit Parameter

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
puba
User
Beiträge: 13
Registriert: Dienstag 22. Juli 2008, 18:53

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
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])
puba
User
Beiträge: 13
Registriert: Dienstag 22. Juli 2008, 18:53

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
Antworten