bsddb for k, v in db.items(): do order the numbers ?
Ulf Göransson
ug at algonet.se
Mon Mar 7 12:32:50 EST 2005
martijn at gamecreators.nl wrote:
> uhm i'm trying to make a very simple but large database:
>
> Let's say I want these fields : |name|age|country|
>
> Then I can't do this because I use the same key
>
> db["name"] = 'piet'
> db["age"] = '20'
> db["country"] = 'nl'
> # same keys so it wil overwrite
> db["name"] = 'jan'
> db["age"] = '40'
> db["country"] = 'eng'
>
> But how does other people use bsddb then ?
> - with a hidden |int like below ?
>
> db["name|0"] = 'jan'
> db["age|1"] = '40'
> db["country|2"] = 'eng'
>
> - do a little math to
> first is name
> sec is age
> third is country
>
> db["0"] = 'jan'
> db["1"] = '40'
> db["2"] = 'eng'
>
> pointer=0
> for k, v in db.items():
> if pointer =3:
> poiner = 0
> #next 3 fields
>
> ----------------------
> I like bsddb because of the speed and it can handle big files,
> but what is the normal way of using it ?
I don't know about normal but I'd probably do something like
db['piet'] = repr(['piet', 20, 'nl'])
or maybe
db['jan'] = repr({"name":'jan', "age":40, "country":'eng'})
That should hold until Piet #2 comes along, then I might add another
level of lists...
With more complicated data I'd do as the docs say and take a look at
marshal or pickle instead of using repr(). And use a class instead of
lists or dicts...
/ug
More information about the Python-list
mailing list