Seite 1 von 1
SQL Abfrage - ValueError: operation parameter must be str
Verfasst: Mittwoch 1. April 2015, 00:01
von Woddy
Komme hier nicht weiter:
Code: Alles auswählen
#!/usr/bin/env python3
import os, sys, sqlite3
if not os.path.exists("konto.db"):
print("Datei nicht vorhanden")
sys.exit(0)
#Verbindung zu Datenbank aufbauen
connection = sqlite3.connect("konto.db")
#Zeiger sendet Befehle an die Datenbank
cursor=connection.cursor()
nummer=111
sql = "SELECT * FROM personen WHERE kontonummer=?", (nummer)
cursor.execute(sql)
for dsatz in cursor:
print(dsatz[0], dsatz[1], dsatz[2], dsatz[3], dsatz[4],)
connection.close()
ValueError: operation parameter must be str
Re: SQL Abfrage - ValueError: operation parameter must be st
Verfasst: Mittwoch 1. April 2015, 00:08
von BlackJack
@Woddy: `sql` muss eine Zeichenkette sein. Und Du möchtest `execute()` mit zwei Argumenten aufrufen statt nur mit einem — eben der SQL-Anweisung als Zeichenkette und eine Sequenz mit einem Element für den Platzhalter im SQL. Kleiner Tipp: Klammern machen kein Tupel, mit einer einzigen Ausnahme: dem leeren Tupel.
Re: SQL Abfrage - ValueError: operation parameter must be st
Verfasst: Mittwoch 1. April 2015, 01:19
von Woddy
BlackJack hat geschrieben:@Woddy: `sql` muss eine Zeichenkette sein. Und Du möchtest `execute()` mit zwei Argumenten aufrufen statt nur mit einem — eben der SQL-Anweisung als Zeichenkette und eine Sequenz mit einem Element für den Platzhalter im SQL. Kleiner Tipp: Klammern machen kein Tupel, mit einer einzigen Ausnahme: dem leeren Tupel.
Hmmm,...Danke für die Hilfe.
Also ich habe es ein wenig abgeändert und bin etwas weiter.
Code: Alles auswählen
.......
kontonummer=511001099
passwort=1234
sql = "SELECT * FROM personen WHERE kontonummer=? AND passwort=?"
cursor.execute(sql, (kontonummer, passwort))
for dsatz in cursor:
print(dsatz[3])
connection.close()
Funktioniert. Aber es funktioniert nicht mit einer Variabel!
Also:
Code: Alles auswählen
sql = "SELECT * FROM personen WHERE kontonummer=?"
cursor.execute(sql, (kontonummer))
Wo liegt da der Fehler?
Re: SQL Abfrage - ValueError: operation parameter must be st
Verfasst: Mittwoch 1. April 2015, 06:57
von EyDu
Hat BlackJack doch schon geschrieben: Klammern erstellen keine Tupel, mit Ausnahme des leeren Tupels. Mit Kommas sind dis Syntax für Tupel. In deinem Fall also
Re: SQL Abfrage - ValueError: operation parameter must be st
Verfasst: Mittwoch 1. April 2015, 14:12
von Woddy
Ajajajaaajaj! Vielen Dank.

Das war eine lange Geburt.