{ "info": { "author": "Oleiade", "author_email": "tcrevon@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Operating System :: Unix", "Programming Language :: Python :: 2.7" ], "description": "===========\nPy-elevator\n===========\n\n*py-elevator* is a python client for `Elevator `_, a Key-Value store written in Python and based on levelDB, allows high performance on-disk bulk read/write.\n\nAllows async, multithreaded and/or remote access to a multi-leveldb backend.\n\nRelying on the zeromq network library and msgpack serialization format, it is made to be portable between languages and platforms.\n\n.. image:: http://api.flattr.com/button/flattr-badge-large.png\n :target: https://flattr.com/submit/auto?user_id=oleiade&url=http://github.com/oleiade/py-elevator&title=Py-elevator&language=&tags=github&category=software\n\nRequirements\n============\n\n- zmq-3.X\n- leveldb\n- pyzmq (built with zmq-3.X)\n- plyvel\n\n\nDebian repository\n-----------------\n\nThe ``deb.oleiade.com`` debian repository exposes ``libzmq3``, ``libzmq3-dev``, ``libleveldb1`` and ``libleveldb1-dev`` packages in order to ease your dependencies management. Just add the following line to your ``/etc/apt/sources.list``:\n\n.. code-block:: bash\n\n deb http://deb.oleiade.com/debian oneiric main\n\n\n\nInstallation\n============\n\nJust::\n\n pip install py-elevator\n\n\nUsage\n=====\n\n**Nota** : See `Elevator `_ documentation for details about server usage and implementation\n\nDatabases workaround\n--------------------\n\n.. code-block:: python\n\n >>> from pyelevator import Elevator\n\n # Elevator server holds a default db\n # which the client will automatically\n # connect to\n >>> E = Elevator()\n >>> E.db_name\n 'default'\n\n # You can list remote databases\n >>> E.listdb()\n ['default', ]\n\n # Create a db\n >>> E.createdb('testdb')\n >>> E.listdb()\n ['default', 'testdb', ]\n\n # And bind your client to that new Db.\n >>> E.connect('testdb')\n\n # Note that you canno't connect to a db that doesn't exist yet\n >>> E.connect('dbthatdoesntexist')\n DatabaseError : \"Database does not exist\"\n\n # Sometimes, leveldb just messes up with the backend\n # When you're done with a db, you can drop it. Note that all it's files\n # will be droped too.\n >>> E.repairdb()\n >>> E.dropdb('testdb')\n\n\n # You can even register a pre-existing leveldb db\n # as an Elevator db. By creating it using it's path.\n >>> E.createdb('/path/to/my/existing/leveldb')\n >>> E.listdb()\n ['default', '/path/to/my/existing/leveldb', ]\n\n\n # Elevator objects can also spawn WriteBatches objects,\n # inheriting it's parent Elevator object configuration.\n >>> batch = E.WriteBatch()\n\n\nInteract with a database:\n-------------------------\n\n.. code-block:: python\n\n >>> from pyelevator import Elevator\n >>> E = Elevator() # N.B : connected to 'default'\n\n >>> E.Put('abc', '123')\n >>> E.Put('easy as', 'do re mi')\n >>> E.Get('abc')\n '123'\n >>> E.MGet(['abc', 'easy as', 'you and me'])\n ['123', 'do re mi', None]\n >>> E.Delete('abc')\n >>> for i in xrange(10):\n ... E.Put(str(i), str(i))\n\n # Range supports key_from, key_to params\n >>> E.Range('1', '9')\n [['1','1'],\n ['2','2'],\n ['3', '3'],\n ['4', '4'],\n ['5', '5'],\n ['6', '6'],\n ['7', '7'],\n ['8', '8'],\n ['9', '9'],\n ]\n\n # Or key_from, limit params\n >>> E.Slice('1', 2)\n [['1', '1'],\n ['2', '2'],\n ]\n\n # When RangeIter only knows about key_from/key_to for py-leveldb api\n # compatibility reasons\n >>> it = E.RangeIter('1', '2')\n >>> list(it)\n [['1', '1'],\n ['2', '2'],\n ]\n\n # Elevator objects supports with_statement too\n >>> with Elevator('testdb') as e:\n >>> ....e.Get('1')\n >>>\n '1'\n\nBatches\n-------\n\nThey're very handy and very fast when it comes to write a lot of datas to the database.\nSee LevelDB documentation for more informations. Use it through the WriteBatch client module class.\nIt has three base methods modeled on LevelDB's Put, Delete, Write.\n\n.. code-block:: python\n\n >>> from pyelevator import WriteBatch, Elevator\n\n # Just like Elevator object, WriteBatch connects to 'default' as a default\n # But as it supports the exact same options that Elevator, you can\n # Init it with a pre-existing db\n >>> batch = WriteBatch()\n >>> batch = WriteBatch('testdb')\n\n >>> batch.Put('a', 'a')\n >>> batch.Put('b', 'b')\n >>> batch.Put('c', 'c')\n >>> batch.Delete('c')\n >>> batch.Write()\n\n >>> E = Elevator()\n >>> E.Get('a')\n 'a'\n >>> E.Get('b')\n 'b'\n >>> E.Get('c')\n KeyError: \"Key not found\"\n\n # Batches objects supports with_statement too\n # Write will be automatically called on __exit__\n >>> with WriteBatch('testdb') as batch:\n >>> ....batch.Put('abc', '123')\n >>> ....batch.Put('or simple as...', 'do re mi')\n >>>\n\n\n*Code is clean and simple, don't hesitate to dig into it if you need more details about it's usage*", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/oleiade/py-elevator", "keywords": "py-elevator elevator leveldb database key-value", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "py-elevator", "package_url": "https://pypi.org/project/py-elevator/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/py-elevator/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/oleiade/py-elevator" }, "release_url": "https://pypi.org/project/py-elevator/0.5c/", "requires_dist": null, "requires_python": null, "summary": "Python client for on-disk key/value database Elevator", "version": "0.5c" }, "last_serial": 796835, "releases": { "0.5c": [ { "comment_text": "", "digests": { "md5": "7932e7704116ba4fec9daf2864538f61", "sha256": "9db738dbb7e2b1921fe040401e4868412eb292a4298864830b1d38d5dd5b229c" }, "downloads": -1, "filename": "py-elevator-0.5c.tar.gz", "has_sig": true, "md5_digest": "7932e7704116ba4fec9daf2864538f61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18149, "upload_time": "2013-03-28T09:46:45", "url": "https://files.pythonhosted.org/packages/d3/b3/22e5eb428b49474f505b99db174f4f8325ac4ec3f1fa8db594e64f10e32f/py-elevator-0.5c.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7932e7704116ba4fec9daf2864538f61", "sha256": "9db738dbb7e2b1921fe040401e4868412eb292a4298864830b1d38d5dd5b229c" }, "downloads": -1, "filename": "py-elevator-0.5c.tar.gz", "has_sig": true, "md5_digest": "7932e7704116ba4fec9daf2864538f61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18149, "upload_time": "2013-03-28T09:46:45", "url": "https://files.pythonhosted.org/packages/d3/b3/22e5eb428b49474f505b99db174f4f8325ac4ec3f1fa8db594e64f10e32f/py-elevator-0.5c.tar.gz" } ] }