Форум сайта python.su
Работаю с BSDDB.
По структуре база напоминает такое:
1:запись
Требуется перейти к нечто типо:
1:(запись, запись2, запись3)
Посоветуйте как это сделать? Учитывая, что:
self.db = value
TypeError: Data values must be of type string or None.
Офлайн
Pickle/cPickle?
import Pickle
self.db = Pickle.dumps(value)
value = Pickle.loads(self.db)
Отредактировано (Май 3, 2008 01:19:18)
Офлайн
Офлайн
1 вариант тупо через запятую завать (потом split, но зависит от задачи)
2 вариант взвести флаг DB_DUP, это позволит дублировать ключи
читай подробней в Guide to Oracle Berkeley DB for SQL Developers
раздел Iteration Over Multiple Records
попробовал поиграться, правда в офф. доках ничерта нет=)
In : from bsddb import db
In : mydb = db.DB()
In : mydb.set_flags(db.DB_DUP)
In : mydb.open(“/tmp/test2.db”, None, db.DB_HASH, db.DB_CREATE)
In : mydb.put(“num”, “1”)
In : mydb.put(“num”, “2”)
In : mydb.put(“num”, “3”)
In : mydb.put(“abc”, “a”)
In : mydb.put(“abc”, “b”)
а вот как их прочеть хз )) через курсор c.first();c.next()… не сильно красиво) разве что через bsddb.dbtables
читай
http://pybsddb.sourceforge.net/bsddb3.html
http://yeonisalive.net/python/BerkeleyDB_BBS.php
и bsddb/test/
Отредактировано (Май 3, 2008 15:17:23)
Офлайн
Да, вывести просто: print mydb.items(), mydb.last() и так далее.
Вы меня немного не поняли - на примере у вас задано ключ:информация, так я тоже умею. Но всёравно большое спасибо.Меня интересует вопрос, как задать, чтобы было ключ:инфа:инфа2 (чтобы к инфе2 можно было тоже обратиться) …
Офлайн
mario>>> import shelve
Да, вывести просто: print mydb.items(), mydb.last() и так далее.
Вы меня немного не поняли - на примере у вас задано ключ:информация, так я тоже умею. Но всёравно большое спасибо.Меня интересует вопрос, как задать, чтобы было ключ:инфа:инфа2 (чтобы к инфе2 можно было тоже обратиться) …
j2a@moby:~$ file /tmp/mario.db
/tmp/mario.db: Berkeley DB (Hash, version 8, native byte-order)
Отредактировано (Май 6, 2008 15:14:07)
Офлайн
Спасибо вам обоим большое и толстое :)
Офлайн