{ "info": { "author": "Joaquin Casares", "author_email": "joaquin.casares AT gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# CassandraJsonMapper\n\n\nCassandraJsonMapper is an Apache Cassandra Python driver developed for direct\nfunctionality to store JSON-style objects mapped into Cassandra composite columns.\n\nThis is done via the main methods: `save(key)`, `get(key)`, `delete(key)`.\n\n## History\n\nI needed something small, light-weight, and fast enough on reads and writes for\nshort bursts of data. I was handling JSON returns from REST API calls that \nI would later do light-weight analytics over. This fit my use case efficiently, \nso I decided to share it.\n\n## Setup\n\n pip install CassandraJsonMapper\n\n\n## Initialize Database\n\nSince CassandraJsonMapper uses composite columns heavily to do it's nesting,\nthe schema for the column family that CassandraJsonMapper will use must look\nsimilar to what is provided. \n\n**NOTE:**\nKeep in mind that the number of composite columns created must be at \nleast as deep as the deepest JSON document that will be saved.\n\n```sql\ncreate keyspace json\n with placement_strategy = 'SimpleStrategy'\n and strategy_options = {replication_factor : 1};\n\nuse json;\n\ncreate column family json\n with column_type = 'Standard'\n and comparator = 'CompositeType(\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType,\n org.apache.cassandra.db.marshal.BytesType,org.apache.cassandra.db.marshal.BytesType)'\n and default_validation_class = 'BytesType'\n and key_validation_class = 'BytesType';\n```\n\n\n## Example Code\n\n```python\nimport CassandraJsonMapper\n\ndb = CassandraJsonMapper.db(keyspace='json', column_family='json')\n\ndocument = {\n 'key2': {\n 'test': 'okay'\n }\n}\ndb.save(document)\nassert db.get('key2') == document['key2']\n\ndb.delete('key2')\nassert db.get('key2') == {}\n```\n\n\n## Multi-threaded Example\n\n```python\ndb.mt_save(document)\ndb.mt_finish()\n\nassert db.get('key2') == document['key2']\n```\n\n\n## Limitations\n\nIn hopes of keeping this client simple, the following is not supported:\n\n* Cannot append to lists.\n* Cannot delete portions of a document.\n* Reads may not be returned in full, but paging is supported.\n\n\n## Future Implementations\n\n* Deleting portions of documents.\n* Better list support.\n\n\n## Methods\n\nThis client has a few main methods:\n\n```python\ndef __init__(self, keyspace, column_family, server_list=['localhost'],\n write_consistency=ConsistencyLevel.ONE,\n read_consistency=ConsistencyLevel.ONE,\n request_size=100, batch_size=6000, thread_count=20)\n \"\"\"Create the Cassandra connection pool and CF connection.\"\"\"\n\ndef save(self, dictionary_payload, write_consistency=None, batch_size=None)\n \"\"\"Convert and save dictionary into Cassandra.\"\"\"\n\ndef get(self, key, read_consistency=None,\n return_last_row=False, column_start=None, request_size=None)\n \"\"\"Read and convert Cassandra response into dictionary.\"\"\"\n\ndef delete(self, key, write_consistency=None)\n \"\"\"Delete dictionary from Cassandra.\"\"\"\n\ndef mt_save(self, dictionary_payload)\n \"\"\"Save dictionary asynchronously.\"\"\"\n\ndef mt_finish(self)\n \"\"\"Wait until all pending inserts are performed.\"\"\"\n```", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.github.com/joaquincasares/CassandraJsonMapper", "keywords": "apache cassandra json mapper simple client", "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "CassandraJsonMapper", "package_url": "https://pypi.org/project/CassandraJsonMapper/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/CassandraJsonMapper/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.github.com/joaquincasares/CassandraJsonMapper" }, "release_url": "https://pypi.org/project/CassandraJsonMapper/1.2.1/", "requires_dist": null, "requires_python": null, "summary": "Simple JSON to Cassandra Python client.", "version": "1.2.1" }, "last_serial": 783922, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "9742234e702f0c3fd7f0417b795fe86e", "sha256": "427f9ea48589ad365c7f43cb292bb14782b344bd8eccc5da19763f4e71c109ea" }, "downloads": -1, "filename": "CassandraJsonMapper-1.0.0.tar.gz", "has_sig": false, "md5_digest": "9742234e702f0c3fd7f0417b795fe86e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5642, "upload_time": "2012-10-18T00:14:52", "url": "https://files.pythonhosted.org/packages/c1/74/0763bcbdcb1465930a1411104116caef054c173bac372b958243dea31ac4/CassandraJsonMapper-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8c7ab6de599a3d8ab216d85c0ea5551f", "sha256": "5fa8f7124beb46d56cb133d83c615c812e57e8b2d174f60d6cbc690e426fefc3" }, "downloads": -1, "filename": "CassandraJsonMapper-1.0.1.tar.gz", "has_sig": false, "md5_digest": "8c7ab6de599a3d8ab216d85c0ea5551f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5636, "upload_time": "2012-10-21T22:25:24", "url": "https://files.pythonhosted.org/packages/72/07/e99d551428bafc35d88d293467f4a4c32c56398068a8513709c394686c88/CassandraJsonMapper-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "859b6b7f3679cb860d9efba1e18ad5eb", "sha256": "043c4f25638536fdb766188aa81e39ded91fe2880b605b67f71b22a8fa7c5166" }, "downloads": -1, "filename": "CassandraJsonMapper-1.1.0.tar.gz", "has_sig": false, "md5_digest": "859b6b7f3679cb860d9efba1e18ad5eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5733, "upload_time": "2013-01-17T07:00:10", "url": "https://files.pythonhosted.org/packages/60/92/1e333af391238656f1c22c2f85505899c39fe9c09e9d50d654fa4fbbb689/CassandraJsonMapper-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "f937ceca876e21050821c4ec297d1eaa", "sha256": "6b1e41bddafa0fee87669a7d28edb019392309f9f818f0d4dbd766ac7a3964c2" }, "downloads": -1, "filename": "CassandraJsonMapper-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f937ceca876e21050821c4ec297d1eaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5814, "upload_time": "2013-01-17T18:12:17", "url": "https://files.pythonhosted.org/packages/d4/9e/a81bae2c1bf703d42d3a9d35b6f7ab09c2a154ec8a8f6b84ac75cc573584/CassandraJsonMapper-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "654546300e7825117533e59bb4cadc30", "sha256": "2dfd86ac45a6a106f754b24688846711d61d7f66ee1b97287a802e09282c7001" }, "downloads": -1, "filename": "CassandraJsonMapper-1.2.1.tar.gz", "has_sig": false, "md5_digest": "654546300e7825117533e59bb4cadc30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6216, "upload_time": "2013-01-24T18:57:12", "url": "https://files.pythonhosted.org/packages/c3/80/aae25251ec5b77578bca1ee149741f14f7ec69d763031cab57f105598f99/CassandraJsonMapper-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "654546300e7825117533e59bb4cadc30", "sha256": "2dfd86ac45a6a106f754b24688846711d61d7f66ee1b97287a802e09282c7001" }, "downloads": -1, "filename": "CassandraJsonMapper-1.2.1.tar.gz", "has_sig": false, "md5_digest": "654546300e7825117533e59bb4cadc30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6216, "upload_time": "2013-01-24T18:57:12", "url": "https://files.pythonhosted.org/packages/c3/80/aae25251ec5b77578bca1ee149741f14f7ec69d763031cab57f105598f99/CassandraJsonMapper-1.2.1.tar.gz" } ] }