kleine Datenbank

Code-Stücke können hier veröffentlicht werden.
Antworten
nuss
User
Beiträge: 53
Registriert: Donnerstag 28. August 2008, 11:36

Hi, ich hab ne kleine Datenbank geschrieben, die allerdings noch nicht ganz fertig ist.

Edit: ich habe den code nochmal verändert damit er lesbarer ist, und ihn ueber paste.pocoo
eingebunden :)

http://paste.pocoo.org/show/89159/

leider gibts noch keine speicher funktionen und die benutzung koennte noch ein
bisschen verbessert werden, aber es iss n anfang ;)


Edit/ sooo, hab das ganze nochmal neu ( und vor allem besser ) geschrieben.
http://paste.pocoo.org/show/89275/

Und noch n kleinen Bleistift zur Benutzung:

Code: Alles auswählen

table = Table()
table.create_spalten("Name", "Vorname", "Geschlecht")
table.create_zeile(Vorname="Max", Name="Mustermann", Geschlecht="Mann")
# wer sich z.b. beim Geschlecht nicht so sicher ist, kanns auch weglassen,
# in dem Fall ist das Geschlecht dann '' .
print table.zeile[0]

# Max hat ne Geschlechtsumwandlung gemacht ;)
table.zeile[0].set_value("Maxine", "Vorname")
table.zeile[0].set_value("Frau", "Geschlecht")
mustermann = table.search("Mustermann", "Name")
print mustermann[0]
als nächstes möchte ich Funktionen zum speichern und laden der Tabelle
schreiben, bin mir aber noch nicht ganz sicher, wie ichs machen soll.
Pickle wäre ne Möglichkeit. :roll:
Qubit
User
Beiträge: 128
Registriert: Dienstag 7. Oktober 2008, 09:07

nuss hat geschrieben: Edit/ sooo, hab das ganze nochmal neu ( und vor allem besser ) geschrieben.
http://paste.pocoo.org/show/89275/
Das Einzige, was mir hier etwas seltsam vorkommt, ist, dass für jede Spalte und jede Zeile eine Instanz von dict verwendet wird.
Geht auch anders ;-)
http://paste.pocoo.org/show/89385

Code: Alles auswählen

if __name__ == '__main__':

    table = Table('Name','Vorname','Geschlecht')

    print "Tabelle:\n",table['cols']    
    table.update({'Name':'Mustermann','Vorname':'Max','Geschlecht':'Mann'})
    table.update({'Name':'Mustermann','Vorname':'Moritz','Geschlecht':'Mann'})
    table.update({'Name':'Musterfrau','Vorname':'Maxi','Geschlecht':'Frau'})
    table.show()
    
    print "\nUpdate Max Mustermann:\n",table['cols']
    table.update({'Vorname':'Maxine','Geschlecht':'Frau'},{'Name':'Mustermann','Vorname':'Max'})
    table.show({'Name':'Muster'})

    print "\nShow Geschlecht M:\n",table['cols']
    table.show({'Geschlecht':'M'})

    print "\nDelete Moritz Mustermann:\n",table['cols']
    table.delete({'Name':'Muster','Vorname':'Moritz'})
    table.show()
Zuletzt geändert von Qubit am Mittwoch 29. Oktober 2008, 10:42, insgesamt 2-mal geändert.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Tabellen und Zeilen (also ein relationales Datenbankbankschema) ist eigentlich nur sinnvoll, wenn man auch die relationale Algebra (Selektion, Projektion, Kreuzprodukt, usw.) implementiert. Wenn du das nicht vorhast, ist IMHO ein (persistente) Dictionary das einfachere Modell, um Objekte zu speichern.

Das Zeilen von dict erben halte ich nicht für eine gute Idee. Ich würde Zeilen als Tupel oder Listen repräsentieren. Tabellen kennen dann eine Liste oder eine Menge dieser Zeilen sowie eine weitere Liste mit den Spalten zur Beschreibung.

Hier ist ein Beispiel...

Stefan
nuss
User
Beiträge: 53
Registriert: Donnerstag 28. August 2008, 11:36

so ich hab das ganze nochmal sehr viel schoener und kuerzer gemacht ^^
Danke fuer den input ;)
http://paste.pocoo.org/show/89392/

im Prinzip kann man so sogar das set_value_by_Nmb weglassen,
weils ja praktisch genauso einfach ist das value per hand zu aendern.
Antworten