TypeError: not all arguments converted during string formatt

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
didley
User
Beiträge: 2
Registriert: Donnerstag 16. Dezember 2010, 15:11

Ich erhalte bei einer Abfrage imme den Hinweis
TypeError: not all arguments converted during string formatting
Vieles habe ich schon probiert und weiss nun nicht mehr weiter. Wer kann mir hierbei helfen?

Code: Alles auswählen

       n_field_name = 'PPS'

        cursor_req.execute("SELECT ticket.id, ticket.type, ticket.summary, ticket.status, ticket_custom.value, "
        "ticket_custom.name FROM "
        "ticket_custom INNER JOIN ticket ON (ticket_custom.ticket = ticket.id) "
        "WHERE ticket.type ='requirement' AND ticket_custom.name ='project' AND ticket_custom.value='%s' "
        "ORDER BY ticket_custom.value, ticket.summary", (n_field_name,))
didley
ws
User
Beiträge: 65
Registriert: Freitag 16. Juni 2006, 13:19

Hallo didley,

die Frage ist, mit was für einem Framework/welchem API Du da gerade arbeitest. Woher kommt das

Code: Alles auswählen

cursor_req.execute(
?

Gruss

Wolfgang
ws
User
Beiträge: 65
Registriert: Freitag 16. Juni 2006, 13:19

Vielleicht kannst Du einfach erstmal ein Statement als normalen String erzeugen und dann in das execute(...) stecken (s.u.)?

Code: Alles auswählen

n_field_name = 'PPS'
stmt = (
    "SELECT ticket.id, ticket.type, ticket.summary, ticket.status, ticket_custom.value, "\
    "ticket_custom.name FROM "\
    "ticket_custom INNER JOIN ticket ON (ticket_custom.ticket = ticket.id) "\
    "WHERE ticket.type ='requirement' AND ticket_custom.name ='project' AND ticket_custom.value='%s' "\
    "ORDER BY ticket_custom.value, ticket.summary" % n_field_name
    )
cursor_req.execute(stmt)
didley
User
Beiträge: 2
Registriert: Donnerstag 16. Dezember 2010, 15:11

Hallo ws,

vielen Dank. Die Abfrage als string funktioniert. Ich hatte das auch schon probiert. Allerdings ohne Zeilenumbrüche. Ich hätte mir 9 Stunden Arbeit sparen können, wenn ich mich gleich an das Forum gewandt hätte. Ein Hoch auf das Forum. :P

Zur Information: Ich arbeite mit der Trac SQL Database API.

Das

Code: Alles auswählen

cursor_req.execute
kommt zustande durch

Code: Alles auswählen

        # DB look-up
        db = self.env.get_db_cnx()
        cursor_req = db.cursor()
Danke ws

didley
Antworten