[gelöst] Parametrisierung von SQL-Queries und SELECT *

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 7. Februar 2008, 14:27

Hi Leute...
habe nach vielem Lesen herausgefunden das ich mal wieder alles falsch mache und nun mein Script so umgebaut, das ich mit Parametern arbeite.

Jetzt hab ich jedoch das Problem, wenn ich nur einen SELECT * FROM table machen will, dann eine Fehlermeldung kommt...

Stell ich mich jetzt nur doof an, oder muss ich dafür ne eigene methode schreiben, in der ich args nicht übergebe?
Zuletzt geändert von würmchen am Donnerstag 7. Februar 2008, 15:25, insgesamt 1-mal geändert.
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Donnerstag 7. Februar 2008, 14:29

Ein Stückchen Code würde die Sache sicher erhellen, aber pauschal würde ich sagen: Ja.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 7. Februar 2008, 14:51

Code: Alles auswählen

    def askDb(query="", value=""):
        try:
            cur.execute(query, value)
            result = self.cur.fetchall()
        except MySQLdb.Error:
            raise "Error calling the database"
        return result
und dann mach ich später sowas hier...

Code: Alles auswählen

test = askDb("SELECT * FROM table")

Das ganze passiert in nem Webinterface und ich bekomme die Fehleraufgabe als html....
TypeError: not all arguments converted during string formatting
args = ('not all arguments converted during string formatting',)
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Donnerstag 7. Februar 2008, 15:00

Nimm mal als Default-Wert für value ein leeres tuple ...

execute() erwartet als zweites Argument eine Liste oder ein Tuple, ein leerer String tut es nicht.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 7. Februar 2008, 15:24

Super, das hat geholfen :-)
Antworten