[pybsddb] Please add this simple function
Jesus Cea
jcea at argo.es
Mon Apr 27 22:21:45 CEST 2009
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Yong Li wrote:
> Hi,
>
> Please add a __contains__ to the DB object in pybsddb. Right now if you do
>
> key in db
>
> Python treats db as a iterable and iterates across the entire db
> because there is no __contains__ but there is an __iter__. Please add
> this to DB:
>
> def __contains__(self, key):
> return self.has_key(key)
The code is far more complicated, because we need to implement this in C.
This change will be available in pybsddb 4.7.6. But, beware, the
"__contains__()" call will be NOT protected by transactions.
I don't actually like this. Would you rather prefer to raise an
exception when doing "if key in DB:" to warning about the lack of
transaction isolation?. Recent versions of Berkeley DB has a
"DB.exists()" *transactional* function. I can implement something
similar for all supported BDB versions.
In my "to to" I just wrote:
"""
* 20090427: "__contains__()" is not transactionally protected. This is
a problem. Maybe we should raise an exception to avoid the usage
of patterns like "if key in DB", not transactionally protected.
Think about this.
"""
- --
Jesus Cea Avion _/_/ _/_/_/ _/_/_/
jcea at jcea.es - http://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/
jabber / xmpp:jcea at jabber.org _/_/ _/_/ _/_/_/_/_/
. _/_/ _/_/ _/_/ _/_/ _/_/
"Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/
"My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/
"El amor es poner tu felicidad en la felicidad de otro" - Leibniz
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iQCVAwUBSfYT1plgi5GaxT1NAQJ1PwP+MKBjhtTYumBmzWkpC7mR1TdO/xFJMW9X
99ga0yYKdOEjP0lF+dsz/T4F2dfI/lbb7iF2Qr0gZZeTyAUqUJqCdthbuI3MAt/P
iSHlJa5MjnUFK5bABqmBi9HBo7Ctrd/62majPl1noPxBcmViC1+VfM6IHn7c/8Hm
ushyEQ6ODog=
=pMmG
-----END PGP SIGNATURE-----
More information about the pybsddb
mailing list