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

Code: Alles auswählen

cursor.execute(sql, (kontonummer,))

Re: SQL Abfrage - ValueError: operation parameter must be st

Verfasst: Mittwoch 1. April 2015, 14:12
von Woddy
Ajajajaaajaj! Vielen Dank. :idea:
Das war eine lange Geburt.