truehumandesign hat geschrieben:Die Ausgabe in die Tabelle sieht folgendermaßen aus 12345'/00001
Stimmt da noch was nicht mit meinem Syntax?
In der Tat. Du gibst zwei Werte hintereinander an, so dass im Endeffekt der String
in der Datenbank ankommt. Die beiden Anführungszeichen am Anfang und Ende kennzeichnen für die Datenbank Beginn und Ende des Strings. Das doppelte Anführungszeichen in der MItte wird von der Datenbank als Escaping interpretiert und zu einem Anführungszeichen eingedampft. Du musst also, wenn du nur einen Wert hast, auch nur einen Wert ins SQL-Statement schreiben.
Wenn ich es richtig verstanden habe soll der Wert aus der Eingabe mit dem Wert der laufenden Nummer verkettet werden und das getrennt mit einem Slash. Ich zeige das mal an einem Beispiel auf und verwende nach der Empfehlung aus
PEP-8 Bezeichnernamen in Kleinbuchstaben.
Code: Alles auswählen
new_value = amnr + '/' + str(lfdnr)
# oder alternativ
new_value = '{0}/{1}'.format(amnr, lfdnr)
Aus deinem Programm wird damit
Code: Alles auswählen
amnr = raw_input('AMNR eingeben:',)
new_value = '{0}/{1}'.format(amnr, lfdnr)
cur.execute('UPDATE tmp_foo SET amnr = %s', new_value)
Edit: Warum die letzte Codezeile nicht ganz richtig ist und noch ein wenig bearbeitet werden muss kann man unter
Passing parameters to SQL queries nachlesen. Danke an BlackJack, der mich darauf aufmerksam gemacht hat - und auch schon in seinem ersten Post zu diesem Thema darauf hingewiesen hat.