Alles in einer anyDBm speichern ( nicht nur strings )

Code-Stücke können hier veröffentlicht werden.
Antworten
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Hier ein kleines Skript, dass nicht nur strings in einer DB speichern kann:

Code: Alles auswählen

from pickle import dumps, loads
import anydbm

class Database:
    def __init__(self, name, mode="w"):
        self.database = anydbm.open(name, mode)

    def __setitem__(self, key, value):
        return self.put(key, value)

    def put(self, key, value):
        key = dumps(key)
        value = dumps(value)
        self.database[key] = value

    def __getitem__(self, key):
        key = dumps(key)
        return self.get(key)

    def get(self, key):
        value = self.database[key]
        value = loads(value)
        return value

    def __repr__(self):
        return str(dict(self.database))

    def __str__(self):
        return self.__repr__()

    def close(self):
        self.database.close()

    
Und hier noch ein Beispiel

Code: Alles auswählen

db = Database("random.db", "c")
db.close() # einfach nur um die zu erstellen
del db

db = Database("random.db")
db["random"] = ["meine", "kleine", "liste"] # funtkioniert auch mit ganzen klassen
db.close()
del db

# und jetzt ausprobieren

db = Database("random.db")
db["random"] 
# ["meine", "kleine", "liste"]
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

INFACT hat geschrieben:Hier ein kleines Skript, dass nicht nur strings in einer DB speichern kann
Hallo INFACT!

Wolltest du *shelve* nachprogrammieren? :D

Code: Alles auswählen

>>> import shelve
>>> db = shelve.open("/home/gerold/Desktop/test.shelve")
>>> db["random"] = [1, 2, 3, u"asdf"]
>>> db.close()
>>> db = shelve.open("/home/gerold/Desktop/test.shelve")
>>> db["random"]
[1, 2, 3, u'asdf']
>>> db.close()
>>> 
Siehe http://www.python-forum.de/topic-6157.html oder besser http://docs.python.org/library/shelve.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

ach so ein Mist ich wusste garnicht dass das geht
egal mein Code ist bestimmt nicht so viel schlechter als shelve
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Antworten