{ "info": { "author": "Adam Kariv", "author_email": "adam.kariv@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# kvfile\n\n[![Travis](https://img.shields.io/travis/akariv/kvfile/master.svg)](https://travis-ci.org/akariv/kvfile)\n[![Coveralls](http://img.shields.io/coveralls/akariv/kvfile.svg?branch=master)](https://coveralls.io/r/akariv/kvfile?branch=master)\n\nA simple Key-Value store that's file based - so can accommodate large data sets with a small memory footprint.\n\nInternally will use the faster `leveldb` as a storage backend or `sqlite3` as fallback if `leveldb` is not available.\n\n## The Basics\n\nThe API should feel familiar to anyone working with Python.\nIt exposes `get`, `keys` and `items` for reading from the DB, and `set` for setting a value in the DB.\n\n### Initializing\n\n```python\nimport datetime\nimport decimal\n\nfrom kvfile import KVFile\n\nkv = KVFile()\n```\n\n### Setting values\n\n```python\nkv.set('s', 'value')\nkv.set('i', 123)\nkv.set('d', datetime.datetime.fromtimestamp(12325))\nkv.set('n', decimal.Decimal('1234.56'))\nkv.set('ss', set(range(10)))\nkv.set('o', dict(d=decimal.Decimal('1234.58'), \n n=datetime.datetime.fromtimestamp(12325)))\n```\n\n### Getting values\n\n```python\nassert kv.get('s') == 'value'\nassert kv.get('i') == 123\nassert kv.get('d') == datetime.datetime.fromtimestamp(12325)\nassert kv.get('n') == decimal.Decimal('1234.56')\nassert kv.get('ss') == set(range(10))\nassert kv.get('o') == dict(d=decimal.Decimal('1234.58'), \n n=datetime.datetime.fromtimestamp(12325))\n```\n\n### Listing values\n\n`keys()` and `items()` methods return a generator yielding the values for efficient stream processing.\n\nThe returned data is sorted ascending (by default) based on the keys\n\n```python\nassert list(kv.keys()) == ['d', 'i', 'n', 'o', 's', 'ss']\nassert list(kv.items()) == [\n ('d', datetime.datetime.fromtimestamp(12325)), \n ('i', 123), \n ('n', decimal.Decimal('1234.56')), \n ('o', {'d': decimal.Decimal('1234.58'), \n 'n': datetime.datetime.fromtimestamp(12325)}), \n ('s', 'value'), \n ('ss', {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})\n]\n```\n\nSet the `reverse` argument to True for the `keys()` and `items()` methods to sort in descending order.\n\n### Bulk inserting data\n\nThe SQLite DB backend can be very slow when bulk inserting data. You can use the insert method to insert efficiently in bulk.\n\n```python\nkv.insert(((str(i), ':{}'.format(i)) for i in range(50000)))\n```\n\nThe batch size is 1000 by default, you should modify it depending on the size of your data and available memory.\n\n```python\nkv.insert(((str(i), ':{}'.format(i)) for i in range(50000)), batch_size=40000)\n```\n\nIf you are inserting data from a generator and need to use the inserted data, use `insert_generator` method:\n\n```python\nfor key, value in kv.insert_generator(((str(i), ':{}'.format(i)) for i in range(50)), batch_size=10):\n print(key, value)\n```\n\n## Installing leveldb\n\nOn Debian based Linux:\n```bash\n$ apt-get install libleveldb-dev libleveldb1\n```\n\nOn Alpine based Linux:\n```bash\n$ apk --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --update add leveldb leveldb-dev\n```\n\nOn OS X:\n```bash\n$ brew install leveldb\n```\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/akariv/kvstore", "keywords": "data", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "kvfile", "package_url": "https://pypi.org/project/kvfile/", "platform": "", "project_url": "https://pypi.org/project/kvfile/", "project_urls": { "Homepage": "https://github.com/akariv/kvstore" }, "release_url": "https://pypi.org/project/kvfile/0.0.7/", "requires_dist": [ "isodate", "cachetools", "pylama ; extra == 'develop'", "tox ; extra == 'develop'", "plyvel (<1) ; extra == 'speedup'" ], "requires_python": "", "summary": "Simple File-based KV-Store", "version": "0.0.7" }, "last_serial": 5598109, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "9214787a94d80c9fc8b3dc586260ba58", "sha256": "9a5570611fd0cfa472062461965c978ba5e792cbe07137e7d5a77478235ce971" }, "downloads": -1, "filename": "kvfile-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9214787a94d80c9fc8b3dc586260ba58", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4162, "upload_time": "2018-06-17T15:16:38", "url": "https://files.pythonhosted.org/packages/a0/97/109f50daaa9f77b0a1930270fdc9eb5dbcf9d32bd0b6e9821b0c1a8a0ba9/kvfile-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "24876278eb6b045f4c6ae681748bc1a8", "sha256": "1ac3191baaab1a78dd5041b5aeadbd99b130b29ddd46a825cbde0b3d47e4b8c3" }, "downloads": -1, "filename": "kvfile-0.0.1.tar.gz", "has_sig": false, "md5_digest": "24876278eb6b045f4c6ae681748bc1a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6091, "upload_time": "2018-06-17T15:16:39", "url": "https://files.pythonhosted.org/packages/15/55/677572cfc12e016738deb0a41bfd06f775ce195898888a37a7a52dbe67dd/kvfile-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "bf37cdb1ff59a82f4936a8c5424e6ff0", "sha256": "264c41a16c06808bb24f730264708fe5a7e7aa31fb3129a374f63e1ee0419acc" }, "downloads": -1, "filename": "kvfile-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bf37cdb1ff59a82f4936a8c5424e6ff0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4385, "upload_time": "2018-08-07T05:23:56", "url": "https://files.pythonhosted.org/packages/b8/74/48a9268e0328f51438f3957e950bddd2ff4bac929bdb414a9a84f84e1b25/kvfile-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b90b36606eec307989ece2aea1bbcd2", "sha256": "913944f543c38a0f678e76dbfda37d00f1fac03af5f04d47876edadaeb8e4a52" }, "downloads": -1, "filename": "kvfile-0.0.2.tar.gz", "has_sig": false, "md5_digest": "9b90b36606eec307989ece2aea1bbcd2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6456, "upload_time": "2018-08-07T05:22:26", "url": "https://files.pythonhosted.org/packages/93/17/9ee55c44744fbc18d4d13df0bd9aa42467a50609f9c6575b6c3aa8b6e15a/kvfile-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "443c543bb0ffdeff20b88310bc697eb5", "sha256": "b919eb9aa3abfd85e7f78bd5025f9b9d947371cefc9ed493d9db767463dc9a37" }, "downloads": -1, "filename": "kvfile-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "443c543bb0ffdeff20b88310bc697eb5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 4769, "upload_time": "2018-08-07T11:08:39", "url": "https://files.pythonhosted.org/packages/f7/a4/943c41d1ed5c9371c18a3a9525a04d4775c1d3a1a76643f4cf960e9aab59/kvfile-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2595c3cb4bd9b02adf2022384ff4568f", "sha256": "e6a62e2395eefb157218a48a2593d9e01e25d27cadeda2ea7ed2ad47519ab26e" }, "downloads": -1, "filename": "kvfile-0.0.3.tar.gz", "has_sig": false, "md5_digest": "2595c3cb4bd9b02adf2022384ff4568f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6874, "upload_time": "2018-08-07T11:08:41", "url": "https://files.pythonhosted.org/packages/0f/e0/ec4ccb4033da5fee86f38e145732d49182f92e9013b2bf78f226ccb0828f/kvfile-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "80a07e7aa7ae4c8032582c69178a1c1e", "sha256": "fb9131e0c82d22cb0ac988b75a1870492ad708089d965cadae5a98c1f786ec14" }, "downloads": -1, "filename": "kvfile-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "80a07e7aa7ae4c8032582c69178a1c1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5690, "upload_time": "2018-10-15T10:20:41", "url": "https://files.pythonhosted.org/packages/d0/17/8b995a4e4cdf1f68ca8e1f020f85e8cd5b4db303b3f1b2883d7cdb22c7d9/kvfile-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "da9b91634770987f9ab6ca35c159587a", "sha256": "2bee02a9ccd087e3743baf63a63a88ee87101f8d65797844e4d6986dea8034c6" }, "downloads": -1, "filename": "kvfile-0.0.4.tar.gz", "has_sig": false, "md5_digest": "da9b91634770987f9ab6ca35c159587a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6977, "upload_time": "2018-10-15T10:20:42", "url": "https://files.pythonhosted.org/packages/bd/50/a8b063d493dcbdbdbcc451ac57b226a80b449adc847b60eec48620937dec/kvfile-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "ec64d5236ffb15a318df67fba4437f0f", "sha256": "84ed592c286c5f3bff3916623483c4049cba56c8558ee4627621a0307abaff52" }, "downloads": -1, "filename": "kvfile-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ec64d5236ffb15a318df67fba4437f0f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5699, "upload_time": "2018-10-18T12:48:09", "url": "https://files.pythonhosted.org/packages/56/a2/076cd3b3ae3dc03bafe4ae18c0a0293cf4380a3de176ab45e3e68de45c05/kvfile-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa6c5bf4dc78b05c030fc8934e33ba73", "sha256": "e312eaa6ff7cf2fbf26bd9e0a1a14edae95fe62919469b8e963b3543c067ca4c" }, "downloads": -1, "filename": "kvfile-0.0.5.tar.gz", "has_sig": false, "md5_digest": "fa6c5bf4dc78b05c030fc8934e33ba73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7000, "upload_time": "2018-10-18T12:48:10", "url": "https://files.pythonhosted.org/packages/6c/08/fbb0b8b20a908712d7ab9505d5c667e22e8464c5cd5b6cb0d437c828b7bc/kvfile-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "296cb0729b9e3b864c06fbf2a7a70408", "sha256": "93763399861b206da681621d7aaf116c21a2921925fcf2299228afc6930e8ebe" }, "downloads": -1, "filename": "kvfile-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "296cb0729b9e3b864c06fbf2a7a70408", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5707, "upload_time": "2018-10-19T12:19:31", "url": "https://files.pythonhosted.org/packages/1d/d5/859df9ee98de2f93cccef32a9a2539a13ea74d5f6c0a185bbc42f4383a10/kvfile-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31c173f47d77a9865896ee82c4c0c0a4", "sha256": "afcf33a4221e2458bd766093f3dddac9b4dc498771fc48fe74c2bfde99b96599" }, "downloads": -1, "filename": "kvfile-0.0.6.tar.gz", "has_sig": false, "md5_digest": "31c173f47d77a9865896ee82c4c0c0a4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6999, "upload_time": "2018-10-19T12:19:33", "url": "https://files.pythonhosted.org/packages/ee/3e/b74769bd246fe16c4eaf9a44e22a1926b96ca662d379837dc670023426db/kvfile-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "317e64761ba789b7e8e26a89f6d42876", "sha256": "05524d84e1d94c9455e44fd21a0c97da7b582b7bd3883b4df0ca12a9efcffc50" }, "downloads": -1, "filename": "kvfile-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "317e64761ba789b7e8e26a89f6d42876", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6278, "upload_time": "2019-07-29T07:55:15", "url": "https://files.pythonhosted.org/packages/1f/ae/bfb2ac5a622b0257b3e70caabbea42e7252ea825c1474145dbbe258799c3/kvfile-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c0341d07056e43f5bd6462529dca3e3", "sha256": "cf23ebd5dfecb40aa66289f979497901bece2c006cfd859a6fc1510b9ac65d92" }, "downloads": -1, "filename": "kvfile-0.0.7.tar.gz", "has_sig": false, "md5_digest": "9c0341d07056e43f5bd6462529dca3e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7357, "upload_time": "2019-07-29T07:55:17", "url": "https://files.pythonhosted.org/packages/c4/1e/7a313bdb88247109463018bfeecd8f69880fdbf38b4876177b198d4b255f/kvfile-0.0.7.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "317e64761ba789b7e8e26a89f6d42876", "sha256": "05524d84e1d94c9455e44fd21a0c97da7b582b7bd3883b4df0ca12a9efcffc50" }, "downloads": -1, "filename": "kvfile-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "317e64761ba789b7e8e26a89f6d42876", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6278, "upload_time": "2019-07-29T07:55:15", "url": "https://files.pythonhosted.org/packages/1f/ae/bfb2ac5a622b0257b3e70caabbea42e7252ea825c1474145dbbe258799c3/kvfile-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c0341d07056e43f5bd6462529dca3e3", "sha256": "cf23ebd5dfecb40aa66289f979497901bece2c006cfd859a6fc1510b9ac65d92" }, "downloads": -1, "filename": "kvfile-0.0.7.tar.gz", "has_sig": false, "md5_digest": "9c0341d07056e43f5bd6462529dca3e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7357, "upload_time": "2019-07-29T07:55:17", "url": "https://files.pythonhosted.org/packages/c4/1e/7a313bdb88247109463018bfeecd8f69880fdbf38b4876177b198d4b255f/kvfile-0.0.7.tar.gz" } ] }