Parameter (:hostvariable in sqlachemy

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Wh1sper
User
Beiträge: 16
Registriert: Dienstag 5. August 2008, 09:31
Kontaktdaten:

Samstag 20. September 2008, 22:04

Ich raffe es nicht.
Liegt bestimmt an dem mangelhaften Verständnis der String/Obect Geschichte von Python.
Mein Code

Code: Alles auswählen

        for beschr in  session.query(rezepte).filter(rezepte.c.id=='1'):
            self.rez_txt.set_text(beschr[1])
funktioniert.
Nun will ich die '1' durch eine im Programm geänderte Variable ersetzen.
Sowas:

Code: Alles auswählen

   for beschr in  session.query(rezepte).filter(rezepte.c.id=='%d'" % (rez_id)
Geht nicht, es kommt zur Beschwerde, das ich keinen int Wert benutzen darf, wo
TypeError: unsupported operand type(s) for %: 'Query' and 'int'

Ok, sehe ich ein.
Und den Filter als String vorher zusammenbauen klappt auch nicht..
DOch wie macht man es denn richtig?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 20. September 2008, 22:59

Du siehst ja, dass das Highlighting schon zeigt, dass du die Strings falsch hast. Insbesondere, da dort kein String-Formatting nötig ist.

Code: Alles auswählen

for beschr in  session.query(rezepte).filter(rezepte.c.id==str(rez_id)): 
Vorrausgesetzt, ``rez_id`` ist ein Integer, wenn es ein String ist, kannst du ``str`` weglassen. Womöglich kannst du das ``str`` so oder so weglassen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Wh1sper
User
Beiträge: 16
Registriert: Dienstag 5. August 2008, 09:31
Kontaktdaten:

Sonntag 21. September 2008, 08:43

Mist, weiter oben im eigenen Quelltext hatte ich ja auch schon

Code: Alles auswählen

        query = session.query(rezepte).filter(rezepte.c.id==rez_id)
        result = query.one()
War wohl zu spät, gestern :)
Antworten