Variablen einer Klasse und sql, Frage nach Best Practice

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Bungmerl
User
Beiträge: 3
Registriert: Montag 8. Januar 2018, 10:28

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))
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Antworten