Seite 1 von 1

[gelöst] sqlite WHERE Frage

Verfasst: Donnerstag 7. August 2008, 11:01
von ete
Hallo!

Ich möchte die Daten aus einer DB ausgeben, wenn nr gleich der artikel_nummer entspricht, wobei nr ein Variable aus einer Funktion ist:

Code: Alles auswählen

def put_artikel(self, evt):
        FILENAME = "artikel.sdb3"
        nr = self.get_ean(evt)
        nr = int(nr)
        conn = sqlite3.connect(FILENAME) 
        adr_cursor = db.select_scan_article(conn)
        print list(adr_cursor)
        conn.close()
Die DB Funktion sieht so aus:

Code: Alles auswählen

def select_scan_article(conn): 
    sql = """ 
    SELECT id, artikel_nummer, ean, name, gruppe, ek, vk, mwst, bestand
    FROM artikel 
    WHERE artikel_nummer = nr
    ORDER by id, name 
    """ 
    cur = conn.cursor() 
    cur.execute(sql) 
    return cur 
Muss ich da einen bestimmten Syntax gebrauchen? Wenn ich WHERE artikel_nummer = '1', teste und nr dann '1' ist, dann funktioniert alles. Übergebe ich der DB Funktion im Kopf die Variable nr, gibts ne Fehlermeldung das nr keine Spalte ist (wieso nr ist doch der Vergleich?)

Re: sqlite WHERE Frage

Verfasst: Donnerstag 7. August 2008, 11:06
von gerold
Hallo ete!

Code: Alles auswählen

def put_artikel(self, evt):
        FILENAME = "artikel.sdb3"
        nr = self.get_ean(evt)
        nr = int(nr)
        conn = sqlite3.connect(FILENAME) 
        adr_cursor = db.select_scan_article(conn, nr)
        print list(adr_cursor)
        conn.close()
Die DB Funktion sieht so aus:

Code: Alles auswählen

def select_scan_article(conn, nr): 
    sql = """ 
    SELECT id, artikel_nummer, ean, name, gruppe, ek, vk, mwst, bestand
    FROM artikel 
    WHERE artikel_nummer = %s
    ORDER by id, name 
    """ 
    cur = conn.cursor() 
    # wenn Textfeld, dann eventuell: ``nr = str(nr)``
    cur.execute(sql, (nr, )) 
    return cur 
mfg
Gerold
:-)

Verfasst: Donnerstag 7. August 2008, 11:21
von ete
Danke :D

Nur wissenshalber, warum ist
artikel_nummer = nr ein Problem? Ich erwähne es doch im Funktionskopf?

Edit:

Bekomme ein " near '%' Synthax Error " :?:

Verfasst: Donnerstag 7. August 2008, 11:46
von gerold
ete hat geschrieben:Bekomme ein " near '%' Synthax Error " :?:
Sch....! Immer diese unterschiedlichen Ersetzzeichen. :x

Nimm statt ``%s`` ``?``.

mfg
Gerold
:-)

Verfasst: Donnerstag 7. August 2008, 11:49
von ete
Danke :D

Verfasst: Donnerstag 7. August 2008, 12:58
von BlackJack
@ete: Würdest Du hier erwarten, dass die 42 ausgegeben wird?

Code: Alles auswählen

In [4]: nr = 42

In [5]: print 'Die Nummmer lautet: nr'
Die Nummmer lautet: nr
Falls nicht, warum denkst Du, dass das bei Deinem Beispiel plötzlich funktionieren sollte? Zumal die SQL-Anweisung irgendwo von einer Datenbanksoftware in einem anderen Prozess verarbeitet wird, die sicher nicht weiss, was im Python-Programm(-Prozess) so an Namen existiert und an welche Werte die gebunden sind.

Verfasst: Freitag 8. August 2008, 11:11
von ete
BlackJack hat geschrieben:@ete: Würdest Du hier erwarten, dass die 42 ausgegeben wird?

Code: Alles auswählen

In [4]: nr = 42

In [5]: print 'Die Nummmer lautet: nr'
Die Nummmer lautet: nr
Falls nicht, warum denkst Du, dass das bei Deinem Beispiel plötzlich funktionieren sollte? Zumal die SQL-Anweisung irgendwo von einer Datenbanksoftware in einem anderen Prozess verarbeitet wird, die sicher nicht weiss, was im Python-Programm(-Prozess) so an Namen existiert und an welche Werte die gebunden sind.
Stimmt :wink: Wurde vom sql Syntax abgelenkt...