DB Abfrage mit psycopg: TypeError: not all arguments conv...

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
newbie_needs_help
User
Beiträge: 18
Registriert: Donnerstag 18. Mai 2006, 08:33

Hi,

mein Problem sieht wie folgt aus:

Ich will aus meiner Datenbank/Tabelle bestimmte Informationen lesen. Nach dem ich die Verbindung zur Datenbank hergestellt habe lese ich das SELECT statement in die Variable 'sql' ein:

Code: Alles auswählen

sql = "SELECT * FROM tabel WHERE entry = 'test'"
cursor.execute(sql)
Dieser Aufforderung kommt mein Script prima nach. Die Spalte 'test' in der Tabelle 'table' ist vom Typ 'text'.
Nun würde ich gerne die Einträge aus der Tabelle ziehen, die in meinem Array TEST aufgelistet sind:

Code: Alles auswählen

sql = "SELECT * FROM table WHERE entry = VALUES (%s)"
TEST=['A1BG', 'A2M']
for temp in genes:
            cursor.execute(sql,temp)
Leider endet das Script mit der Fehlermeldung:

Code: Alles auswählen

cursor.execute(sql, gene)
TypeError: not all arguments converted during string formatting
Kann mir jemande einen Tipp geben, was ich falsch mache?

Danke!
[img]http://www.danasoft.com/sig/newbieneedshelp.jpg[/img]
Benutzeravatar
newbie_needs_help
User
Beiträge: 18
Registriert: Donnerstag 18. Mai 2006, 08:33

habe den Fehler gefunden:

es lag an dem SELECT statement:

Code: Alles auswählen

sql = "SELECT * FROM table WHERE entry = '%s'"
for temp in TEST:
            cursor.execute(sql % temp)
fragt mich nicht wie ich auf VALUES kam :) ...hat mich ewig gekostet den Fehler zu finden. Vielleicht habe ich es einfach in der Literatur bei einem INSERT statement gelesen und abgekapselt.
[img]http://www.danasoft.com/sig/newbieneedshelp.jpg[/img]
BlackJack

Aber jetzt hast Du den '%'-Operator benutzt. Überlass das Einsetzen der Werte in die SQL-Anweisung besser dem Datenbankmodul wie im ersten Beispiel.
Antworten