habs thx
Name hatte in der execute... gefehlt
...SELECT Anschrift_ID, Name, Nachname, Straße, PLZ, Ort, Telefon, Handy, email,
DATE_FORMAT(Geburtstag, '%%d.%%m.%%Y') AS Geburtstag FROM Anschrift where Name = %s...
danke für die hilfe
Datum & SQL
@Joe-Waschl: Die beiden Funktionen enthalten zu viel fast identischen Code. So etwas sollte man vermeiden, weil es fehleranfällig ist wenn man mal etwas verändern will oder muss und das dann in jeder „Kopie” machen muss und auch auf die selbe Weise.
Das mit der Liste ist umständlich gelöst. Statt eine leere zu erstellen und dann ein einziges Element anzuhängen hätte man auch gleich eine literale Liste mit `eingabe` als einzigem Element hinschreiben können. Und das auch gleich als Argument beim `execute()`-Aufruf ohne es noch mal an einen Namen binden zu müssen. Die Klammern dort um die `eingabe` beziehungsweise `liste_eingabe` sind unnötig und sollten weggelassen werden.
Das mit der Liste ist umständlich gelöst. Statt eine leere zu erstellen und dann ein einziges Element anzuhängen hätte man auch gleich eine literale Liste mit `eingabe` als einzigem Element hinschreiben können. Und das auch gleich als Argument beim `execute()`-Aufruf ohne es noch mal an einen Namen binden zu müssen. Die Klammern dort um die `eingabe` beziehungsweise `liste_eingabe` sind unnötig und sollten weggelassen werden.
-
- User
- Beiträge: 20
- Registriert: Freitag 12. November 2010, 20:18
habs geändert
Code: Alles auswählen
def namen(db):
eingabe = [raw_input('Namen: ')]
cur = db.cursor()
cur.execute("""SELECT Anschrift_ID, Name, Nachname, Straße, PLZ, Ort, Telefon, Handy, email,
DATE_FORMAT(Geburtstag, '%%d.%%m.%%Y') AS Geburtstag FROM Anschrift where Name = %s""", (eingabe))
for row in cur.fetchall():
print '---------------------'
print 'Nr.: ', row[0]
print 'Name: ', row[1]
print 'Nachname: ', row[2]
print 'Straße: ', row[3]
print 'PLZ: ', row[4]
print 'Ort: ', row[5]
print 'Telefonnr.:', row[6]
print 'Handy: ', row[7]
print 'Email: ', row[8]
print 'Geburtstag:', row[9]
print '----------------------'
funktioniert die Abfrage so? Ich würde meinen, dass da hinter 'eingabe' noch das Komma fehlt, so wie ich es bereits geändert habe. Sonst übergibt man dem Platzhalter %s ein e dann ein i, n, g, a, b, e und nicht den Wert der in 'eingabe' gespeichert ist.Joe-Waschl hat geschrieben:habs geändert
Code: Alles auswählen
def namen(db): eingabe = [raw_input('Namen: ')] cur = db.cursor() cur.execute("""SELECT Anschrift_ID, Name, Nachname, Straße, PLZ, Ort, Telefon, Handy, email, DATE_FORMAT(Geburtstag, '%%d.%%m.%%Y') AS Geburtstag FROM Anschrift where Name = %s""", (eingabe,)) for row in cur.fetchall(): print '---------------------' print 'Nr.: ', row[0] print 'Name: ', row[1] print 'Nachname: ', row[2] print 'Straße: ', row[3] print 'PLZ: ', row[4] print 'Ort: ', row[5] print 'Telefonnr.:', row[6] print 'Handy: ', row[7] print 'Email: ', row[8] print 'Geburtstag:', row[9] print '----------------------'
lg
@bfm: Da gehört weder das Komma noch die Klammern hin, weil Eingabe bereits eine Liste ist.
Code: Alles auswählen
eingabe = [raw_input('Namen: ')]
@bfm: Ja genau. Eckige Klammern mit Ausdrücken die Werte ergeben und durch Kommas getrennt sind, erzeugen eine Liste. Wobei man natürlich auch nur einen einzigen Wert hinschreiben kann. Ich hätte die Klammern an der Stelle ja nicht gesetzt, sondern beim Aufruf, aber so wie Joe-Waschl kann man es natürlich auch machen.