ich habe folgendes kleine Skript geschrieben (eine kleine Datenbank in sqlite3, die Personendaten speichern kann). Leider bekomme ich, nachdem ich einen datensatz eingegeben habe, stets folgende Fehlermeldung:
Traceback (most recent call last):
File "./verwaltung.py", line 46, in <module>
personaldateneingeben(id, name, vorname, anschrift, telefon, mail)
File "./verwaltung.py", line 21, in personaldateneingeben
VALUES(?,?,?,?,?,?) """, (id, name, vorname, anschrift, telefon, mail))
sqlite3.InterfaceError: Error binding parameter 0 - probably unsupported type.
Das Verrückte ist, dass das Ganze jedoch wunderbar funktioniert hat, bis ich das Auswahlmenü am anfang programmiert habe - Dateneingabe oder Programmende. Warum geht das jetzt nicht mehr?
Bin um jeden Tipp dankbar.
Code: Alles auswählen
#!/usr/src/Python-3.7.2/python
import sqlite3
datenbank = sqlite3.connect('verwaltung.db')
print ("Datenbank geöffnet")
datenbank.execute(""" CREATE TABLE IF NOT EXISTS Personen (
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
VORNAME TEXT NOT NULL,
ANSCHRIFT TEXT,
TELEFON TEXT,
MAIL TEXT)""")
def personaldateneingeben(id, name, vorname, anschrift, telefon, mail):
datenbank.execute (""" INSERT INTO Personen(ID, NAME, VORNAME, ANSCHRIFT, TELEFON, MAIL)
VALUES(?,?,?,?,?,?) """, (id, name, vorname, anschrift, telefon, mail))
datenbank.commit()
print ("Was möchten Sie tun")
print()
print("Daten anlegen=1")
print()
print("Programmende=2")
print()
while True:
eingabe = input ("Bitte eingeben ")
if eingabe == "1":
i = 1
while True:
print()
name = input ("bitte Zunamen eingeben")
vorname = str(input ("bitte Vornamen eingeben"))
anschrift = str(input("bitte Anschrift eingeben oder [Enter], falls unbekannt"))
telefon = str(input("bitte Telefonnummer eingeben oder [Enter], falls unbekannt"))
mail = str(input("bitte mailadresse angeben oder [Enter],falls unbekannt"))
personaldateneingeben(id, name, vorname, anschrift, telefon, mail)
print()
eingabe = input("Noch eine Person anlegen? [j] oder [n]")
if eingabe == "j":
id=int(id)+1
elif eingabe == "n":
break
else:
#eingabe2 = input("Bitte [j] oder [n] eingeben")
while True:
eingabe2 = input("Bitte [j] oder [n] eingeben")
if eingabe2 == "j":
id=int(id)+1
break
if eingabe2 == "n":
break
if eingabe2 == "n":
break
if eingabe == "2":
print ("Auf Wiedersehen")
break
datenbank.close()