Seite 1 von 1

sqlite - Spaltenname mit Variable aufrufen.

Verfasst: Sonntag 27. Dezember 2020, 13:41
von Medicode
Hallo zusammen,

ich möchte ein Funktion entwickeln, die einen Datenbankeintrag ändert (Update). Diese Funktion soll drei Variablen erhalten. Eine eindeutige Personal-ID, die zu ändernde Spalte (auch als Variable) und der Wert der eben dort geändert werden soll.

Hintergrund ist, dass ich später von einer GUI aus diese drei Werte an die Funktion übergeben möchte, womit ich dann Änderung vornehme.

Der Code funktioniert nicht:

Code: Alles auswählen

def update():
    user_input = ['vorname', 'Tom', '1112']
    zeiger.execute("""UPDATE Personal SET ? = ? WHERE nummer = ?""",(user_input[0], user_input[1], user_input[2]))
dieser schon, ich möchte jedoch auch einen andern Spaltenwert ändern. (z.B. nachname)

Code: Alles auswählen

def update():
    user_input = ['Tom','1112']
    
    zeiger.execute("""UPDATE Personal SET vorname = ? WHERE nummer = ?""",(user_input[0], user_input[1]))

Im folgenden der Datenbankeintrag zum Verständnis:

Code: Alles auswählen

import sqlite3
verbindung = sqlite3.connect("Werte.db")#Verbindug zur Datenbank
zeiger = verbindung.cursor()#Zugriff auf Datenbankinhalte

nummer     = "1112" # diese Nummer wird später generiert. 
nachname   = "Muster"
vorname    = "Max"
geburtstag = "01.01.1901"
lohngruppe = "3"
eMail =     "max.mustermann@hotmail.de"
geschlecht = "m" #

Re: sqlite - Spaltenname mit Variable aufrufen.

Verfasst: Sonntag 27. Dezember 2020, 13:45
von sparrow
Das liegt daran, dass man das nicht macht. Die Namen von Tabellen und Feldern werden nicht dynamisch angesprochen. Und deshalb ist das nicht möglich.

Allgemein gilt: SQL in Python? Nimm SQLAlchemy

Re: sqlite - Spaltenname mit Variable aufrufen.

Verfasst: Sonntag 27. Dezember 2020, 14:27
von noisefloor
Hallo,

Ergänzung zu
Die Namen von Tabellen und Feldern werden nicht dynamisch angesprochen
Wenn man der Meinung ist, dass man das braucht, hat man in der Regel einen Fehler im Datenbankentwurf, also wie die Tabellen angelegt sind, welche Felder darin sind und welche Relationen man gesetzt hat.

Gruß, noisefloor

Re: sqlite - Spaltenname mit Variable aufrufen.

Verfasst: Sonntag 27. Dezember 2020, 15:02
von __blackjack__
Das sieht mir hier nach einem unnötigen Mikrooptimierungsversuch aus. Man würde einfach alle Werte, die der Benutzer bearbeiten kann aktualisieren, und nicht nur den oder die, die vom Benutzer tatsächlich verändert wurden.