Seite 1 von 1

minimales ZODB Beispiel

Verfasst: Donnerstag 16. Dezember 2004, 16:46
von jens
Hier mal ein minimales Beispiel, wie man ZODB nutzen kann... Auch wenn es in dem Falle nicht viel mehr als Pickle / UnPickle ist...

Code: Alles auswählen

from ZODB import DB, FileStorage
fstorage = FileStorage.FileStorage("ZODBminimal.fs")
MyDB = DB(fstorage)
connection = MyDB.open()
DBroot = connection.root()

def schreiben1():
    print "Werte setzten 1...",
    DBroot[1] = "ZODB ist cool"
    DBroot[2] = ["Perl","ist","doof"]
    get_transaction().commit()  # Änderungen in DB schreiben
    print "OK\n"

def schreiben2():
    print "Werte setzten 2...",
    DBroot[1] = "ZODB ist super cool!"
    DBroot[2] = "PHP ist auch doof"
    get_transaction().commit()  # Änderungen in DB schreiben
    print "OK\n"

def Anzeigen():
    print "Anzeigen:"
    print "-"*35
    for i in DBroot.keys():
        print "%5s : %s" % (i, DBroot[i])
    print "-"*35

Anzeigen()

schreiben1()

Anzeigen()

schreiben2()

Anzeigen()

MyDB.pack()   # Datenbank packen: Unnötige, alte Daten verwerfen.

Verfasst: Mittwoch 12. Januar 2005, 23:41
von Vortec
Gibt es keine saubere Lösung "connection" zu schließen?

Und wo kommt "get_transaction" her? Gibt es da noch andere, Klassen-freundlichere Methoden?

Verfasst: Donnerstag 13. Januar 2005, 08:52
von jens
Vortec hat geschrieben:Gibt es keine saubere Lösung "connection" zu schließen?
Da bin ich überfragt...
Vortec hat geschrieben:Und wo kommt "get_transaction" her? Gibt es da noch andere, Klassen-freundlichere Methoden?
Das ist eine sehr interessante Frage... Keine Ahnung wo get_transaction herkommt... Aber es funktioniert...

Aber naja, ich blick durch ZODB eh nicht ganz durch... Führ mich ist SQL um einiges Transparenter, auch wenn ich davon auch nicht so viel verstehe ;)

Leider gibt es nicht so viel Doku zu ZODB...
Hab nur die beiden gefunden:
http://www.thomas-guettler.de/vortraege ... hrung.html
http://zope.org/Members/adytumsolutions ... ZODB_PartI

Verfasst: Donnerstag 13. Januar 2005, 15:21
von Beyond
get_transaction wird ein die globals eingebaut. Es geht mittels .commit. Ansonsten über den Destruktor also automagisch.

cu beyond