Найти - Пользователи
Полная версия: Словарь и BSDDB
Начало » Python для экспертов » Словарь и BSDDB
1
mario
Работаю с BSDDB.

По структуре база напоминает такое:

1:запись

Требуется перейти к нечто типо:

1:(запись, запись2, запись3)

Посоветуйте как это сделать? Учитывая, что:

self.db = value
TypeError: Data values must be of type string or None.
ZZZ
Pickle/cPickle?


import Pickle
self.db = Pickle.dumps(value)
value = Pickle.loads(self.db)
j2a
ZZZ
Pickle/cPickle?
Тогда уж shelve
slav0nic
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/
mario
Да, вывести просто: print mydb.items(), mydb.last() и так далее.

Вы меня немного не поняли - на примере у вас задано ключ:информация, так я тоже умею. Но всёравно большое спасибо.Меня интересует вопрос, как задать, чтобы было ключ:инфа:инфа2 (чтобы к инфе2 можно было тоже обратиться) …
j2a
mario
Да, вывести просто: print mydb.items(), mydb.last() и так далее.

Вы меня немного не поняли - на примере у вас задано ключ:информация, так я тоже умею. Но всёравно большое спасибо.Меня интересует вопрос, как задать, чтобы было ключ:инфа:инфа2 (чтобы к инфе2 можно было тоже обратиться) …
>>> import shelve
>>> sh = shelve.open('/tmp/mario.db')
>>> sh = ('spam', ‘eggs’)
>>> sh = ‘string here’
>>> sh = {1: ‘single’, 2: ‘couple’}
>>> sh.close()
>>> shr = shelve.open('/tmp/mario.db')
>>> shr.items()
[('key_one', ('spam', ‘eggs’)),
('key_two', ‘string here’),
('key_three', {1: ‘single’, 2: ‘couple’})]

j2a@moby:~$ file /tmp/mario.db 
/tmp/mario.db: Berkeley DB (Hash, version 8, native byte-order)
mario
Спасибо вам обоим большое и толстое :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB