Im Prinzip hast du eine Master/Gott Klasse "Adressbuch", die alles macht.
Deine Klasse Person ist so eingesetzt völlig unnötig, weil du sie nur einsetzt um den Input zu lesen.
Mein Vorschlag:
Bei Programmstart lädst du alle Personen aus der Datenbank und legst für jede eine Instanz an. Das Programm arbeitet dann nur mit diesen Instanzen, löscht und bearbeitet sie und legt ggf. neue an.
Bei Programmende wird die DB mit den Werten aus den Instanzen neu befüllt.
Außerdem:
- Beschränke deine Zeilen auf 80 Chars
- Starte das Programm nicht direkt, sondern so:
Code: Alles auswählen
if __name__ == "__main__":
#db verbindung
programm()
Code: Alles auswählen
cursor.execute(sql)
row = c.fetchall()
for i in range(0,len(row)):
print str(row[i][0]) + ") " + row[i][1] + " " + row[i][2]
Code: Alles auswählen
cursor.execute(sql)
for row in cursor:
print "%s) %s %s" % (row[0], row[1], row[2])
- Dein Menü ist irgendwie aufgeteilt. Die Hälfte ist in der Adressbuch-Klasse und die andere Hälfte in der programm() Funktion. Nimm das doch zusammen in eine Funktion.
- Und auf normalem Weg kann man dein Programm natürlich auch nicht beenden...