disk based dictionaries

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Shivram U

    #1

    disk based dictionaries


    Hi,

    I want to store dictionaries on disk. I had a look at a few modules
    like bsddb, shelve etc. However would it be possible for me to do the
    following

    hash[1] = [1, 2, 3] where the key is an int and not a string

    bsddb requires that both the key,value are string.
    shelve does support values being object but not the keys. Is there any
    module which support keys which are not strings

    Also how do i use disk based hashes for multidimensiona l hashes such as
    below

    #!/usr/bin/python

    dict={}
    dict['key1'] = {}
    dict[('key1')][('key2')] = 'value'

    key1=dict['key1']
    print key1['key2']

    I have read of mxBeeDict but was unable to get it work properly. I am
    not sure if it supports what i need as i was unable to get any
    documentation about it. Is the module used widely ?

    Below is how i am using the module

    bdict = BeeDict('/tmp/beedict')

    bdict[1] = 1
    print bdict.keys()

    bdict.commit()
    bdict.close()

    bdict1 = BeeDict('/tmp/beedict')
    print bdict1.keys()
    print bdict1.values()


    Would it be that using disk based dictionaries once opened are as fast
    as in memory dictionaries ?

    Thanks in advance,

    Best Regards,
    Shivram U




    Confidentiality Notice

    The information contained in this electronic message and any attachments to this message are intended
    for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
    you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro .com immediately
    and destroy all copies of this message and any attachments.
  • Larry Bates

    #2
    Re: disk based dictionaries

    You may also want to take a look at ZODB (Zope database).
    It handles the pickling, storage and retrieval of all
    Python objects (including dictionaries) very well. And yes
    you can use ZODB without using Zope proper.








    Larry Bates


    Shivram U wrote:[color=blue]
    > Hi,
    >
    > I want to store dictionaries on disk. I had a look at a few modules
    > like bsddb, shelve etc. However would it be possible for me to do the
    > following
    >
    > hash[1] = [1, 2, 3] where the key is an int and not a string
    >
    > bsddb requires that both the key,value are string.
    > shelve does support values being object but not the keys. Is there any
    > module which support keys which are not strings
    >
    > Also how do i use disk based hashes for multidimensiona l hashes such as
    > below
    >
    > #!/usr/bin/python
    >
    > dict={}
    > dict['key1'] = {}
    > dict[('key1')][('key2')] = 'value'
    >
    > key1=dict['key1']
    > print key1['key2']
    >
    > I have read of mxBeeDict but was unable to get it work properly. I am
    > not sure if it supports what i need as i was unable to get any
    > documentation about it. Is the module used widely ?
    >
    > Below is how i am using the module
    >
    > bdict = BeeDict('/tmp/beedict')
    >
    > bdict[1] = 1
    > print bdict.keys()
    >
    > bdict.commit()
    > bdict.close()
    >
    > bdict1 = BeeDict('/tmp/beedict')
    > print bdict1.keys()
    > print bdict1.values()
    >
    >
    > Would it be that using disk based dictionaries once opened are as fast
    > as in memory dictionaries ?
    >
    > Thanks in advance,
    >
    > Best Regards,
    > Shivram U
    >
    >
    >
    >
    > Confidentiality Notice
    >
    > The information contained in this electronic message and any attachments to this message are intended
    > for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
    > you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro .com immediately
    > and destroy all copies of this message and any attachments.[/color]

    Comment

    • Larry Bates

      #3
      Re: disk based dictionaries

      You may also want to take a look at ZODB (Zope database).
      It handles the pickling, storage and retrieval of all
      Python objects (including dictionaries) very well. And yes
      you can use ZODB without using Zope proper.








      Larry Bates


      Shivram U wrote:[color=blue]
      > Hi,
      >
      > I want to store dictionaries on disk. I had a look at a few modules
      > like bsddb, shelve etc. However would it be possible for me to do the
      > following
      >
      > hash[1] = [1, 2, 3] where the key is an int and not a string
      >
      > bsddb requires that both the key,value are string.
      > shelve does support values being object but not the keys. Is there any
      > module which support keys which are not strings
      >
      > Also how do i use disk based hashes for multidimensiona l hashes such as
      > below
      >
      > #!/usr/bin/python
      >
      > dict={}
      > dict['key1'] = {}
      > dict[('key1')][('key2')] = 'value'
      >
      > key1=dict['key1']
      > print key1['key2']
      >
      > I have read of mxBeeDict but was unable to get it work properly. I am
      > not sure if it supports what i need as i was unable to get any
      > documentation about it. Is the module used widely ?
      >
      > Below is how i am using the module
      >
      > bdict = BeeDict('/tmp/beedict')
      >
      > bdict[1] = 1
      > print bdict.keys()
      >
      > bdict.commit()
      > bdict.close()
      >
      > bdict1 = BeeDict('/tmp/beedict')
      > print bdict1.keys()
      > print bdict1.values()
      >
      >
      > Would it be that using disk based dictionaries once opened are as fast
      > as in memory dictionaries ?
      >
      > Thanks in advance,
      >
      > Best Regards,
      > Shivram U
      >
      >
      >
      >
      > Confidentiality Notice
      >
      > The information contained in this electronic message and any attachments to this message are intended
      > for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
      > you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro .com immediately
      > and destroy all copies of this message and any attachments.[/color]

      Comment

      • Chris Cioffi

        #4
        Re: disk based dictionaries

        I'd like to second this suggestion. While there are a few things you
        need to be aware of when writing your code (mostly taken care of in
        the latest release) it's a mostly trivial code change. (For me it was
        replacing a few dictionaries with PersistentMap objects and changing
        the base class of a few objects to Persistant from object.

        FWIW, I'm using ZODB to help track EDI transactions for a help desk
        application. Right now my database hovers in the 100MB range with
        several ten of thousands of objects. I also use it for single object
        temp storage, so I feel it works well from both the small and mid-size
        scale. (It probably works fine for large projects as well, I just
        don't have one right now...)

        Chris


        On Thu, 02 Dec 2004 18:53:44 -0600, Larry Bates <lbates@syscono nline.com> wrote:[color=blue]
        > You may also want to take a look at ZODB (Zope database).
        > It handles the pickling, storage and retrieval of all
        > Python objects (including dictionaries) very well. And yes
        > you can use ZODB without using Zope proper.
        >
        > http://www.zope.org/Products/StandaloneZODB
        >
        > http://zope.org/Members/adytumsoluti...LoveZODB_PartI
        >
        > http://www.h7.dion.ne.jp/~harm/ZODB-Tutorial.py
        >
        >
        > Larry Bates
        >
        >
        >
        >
        > Shivram U wrote:[color=green]
        > > Hi,
        > >
        > > I want to store dictionaries on disk. I had a look at a few modules
        > > like bsddb, shelve etc. However would it be possible for me to do the
        > > following
        > >
        > > hash[1] = [1, 2, 3] where the key is an int and not a string
        > >
        > > bsddb requires that both the key,value are string.
        > > shelve does support values being object but not the keys. Is there any
        > > module which support keys which are not strings
        > >
        > > Also how do i use disk based hashes for multidimensiona l hashes such as
        > > below
        > >
        > > #!/usr/bin/python
        > >
        > > dict={}
        > > dict['key1'] = {}
        > > dict[('key1')][('key2')] = 'value'
        > >
        > > key1=dict['key1']
        > > print key1['key2']
        > >
        > > I have read of mxBeeDict but was unable to get it work properly. I am
        > > not sure if it supports what i need as i was unable to get any
        > > documentation about it. Is the module used widely ?
        > >
        > > Below is how i am using the module
        > >
        > > bdict = BeeDict('/tmp/beedict')
        > >
        > > bdict[1] = 1
        > > print bdict.keys()
        > >
        > > bdict.commit()
        > > bdict.close()
        > >
        > > bdict1 = BeeDict('/tmp/beedict')
        > > print bdict1.keys()
        > > print bdict1.values()
        > >
        > >
        > > Would it be that using disk based dictionaries once opened are as fast
        > > as in memory dictionaries ?
        > >
        > > Thanks in advance,
        > >
        > > Best Regards,
        > > Shivram U
        > >
        > >
        > >
        > >
        > > Confidentiality Notice
        > >
        > > The information contained in this electronic message and any attachments to this message are intended
        > > for the exclusive use of the addressee(s) and may contain confidential or privileged information. If
        > > you are not the intended recipient, please notify the sender at Wipro or Mailadmin@wipro .com immediately
        > > and destroy all copies of this message and any attachments.[/color]
        > --
        > http://mail.python.org/mailman/listinfo/python-list
        >[/color]


        --
        "It is our responsibilitie s, not ourselves, that we should take
        seriously." -- Peter Ustinov

        Comment

        Working...