Seite 1 von 1

Variablen einer Klasse und sql, Frage nach Best Practice

Verfasst: Samstag 24. November 2018, 17:08
von Bungmerl
Hallo

Ich möchte mit sqlite Klassenvariablen in einer Tabelle speichern.
Die Klassenvariablen heissen genau wie Tabellenspalten und die Reihenfolge ist auch identisch.
Unten folgt beispielhaft Tabelle und meine Code. Er gefällt mir nicht, weil ich im Insert-Statement alle Variablen erneut einzeln aufzählen muss.
Gibt es elegantere und kürzere Lösungen, die trotzdem gut lesbar sind?
(Zusatzfrage, gibt es ein gutes Best Practice-Buch für Python?)


Beispielstabelle:

Create table Mitarbeiter (nachname text, vorname text, gehalt text)



Beispielscode

class mitarbeiter:

def __init__(
self,
nachname,
vorname,
gehalt,
):
self.nachname = nachname
self.vorname = vorname
self.gehalt = gehalt

def speichern(self, cursor):
cursor.execute('insert into spiele values(?,?,?)',
(self.lk_nachname, self.nachname, self.gehalt))

Re: Variablen einer Klasse und sql, Frage nach Best Practice

Verfasst: Samstag 24. November 2018, 17:49
von Sirius3
Man sollte sich nie auf die Reihenfolge der Spalten in einer SQL-Tabelle verlassen und immer die Namen explizit angeben:

Code: Alles auswählen

cursor.execute('insert into spiele (nachname, vorname, gehalt) values (?,?,?)',
(self.nachname, self.vorname, self.gehalt))
Hier hast Du auch zwei Fehler eingebaut. Klassen schreibt man nach Konvention groß: ›Mitarbeiter‹.

Wenn Du mehr automatisch erledigen lassen willst, benutze ein ORM (object-relational mapping), wie z.B. mit SQLAlchemy.