{ "info": { "author": "Da Kuang", "author_email": "dkuang1980@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Wukong\n\n[![Latest Version](https://badge.fury.io/py/wukong.svg)](https://pypi.python.org/pypi/wukong/)\n[![Travis CI Build Status](https://travis-ci.org/SurveyMonkey/wukong.svg?branch=master)](https://travis-ci.org/SurveyMonkey/wukong)\n[![Coveralls Coverage Status](https://coveralls.io/repos/github/SurveyMonkey/wukong/badge.svg?branch=master)](https://coveralls.io/github/SurveyMonkey/wukong?branch=master)\n\n\nWukong offers an ORM query engine for Solr and Solr Cloud.\n\n##Installation\n```\n\tpip install wukong\n```\n\n##Usage\n\n\n###Create Solr Collection\nBefore you use wukong, make sure you already created your collection on SolrCloud. For example,\n```\n\tcurl http://localhost:8080/solr/admin/collections?action=CREATE&name=users&numShards=1&replicationFactor=2\n```\n\nA sample schema can be like:\n```\n\n\tid\n \t\n\t\n\t\n\t\n\t...\n\n```\n\n###Create a model class for Solr collection\nCreate a class for your Solr collection by extending the class `SolrDoc`. For example,\n\n```\nfrom wukong.models import SolrDoc\n\nclass User(SolrDoc):\n collection_name = \"users\"\n solr_hosts = \"localhost:8080,localhost:8081\"\n\n def validate_schema_fields(self, fields):\n \tpass\n\n def get_data_for_solr(self):\n \tpass\n\n```\nYou can overide existing methods to fit your business logic, like `validate_schema_fields`, `get_data_for_solr`.\n\n\n###Use Solr QueryManger\n\nCreat a document\n```\nUser.documents.create(User_id=12345, name=\"Test Name\", city=\"Test City\")\n```\n\nUpdate a document\n```\nUser.documents.update(User_id=12345, name=\"Test Name\")\n```\n\nTo index a batch of documentsto your Solr collection, use the container class: SolrDocs. Instead of accessing SOLR\nmultiple times, it only issues one request to SOLR, which is more efficient.\n\n```\n\tdocs = [\n\t\tUser(User_id=12345, name=\"Test Name1\", city=\"Test Cit1\"),\n\t\tUser(User_id=123456, name=\"Test Name2\", city=\"Test City2\")\n\t\t...\n\t]\n\tdocs = SolrDocs(docs)\n\tdocs.index()\n```\n\nFetch a document\n```\nUser.documents.get(User_id__eq=12345)\n```\n\nFetch multiple documents\n```\nUser.documents.filter(name__eq=\"Test Name\", city__wc=\"Test*\").all()\n```\n\nUse compounded logic\n```\nUser.documents.filter(OR(city__wc=\"Test*\", name__eq=\"Test Name\"))\n```\n\nSort by a field\n```\nUser.documents.sort_by(\"-name\").all()\n```\n\nForce only return a certain fields\n```\nUser.documents.only(\"is\", \"name\").all()\n```\n\nForce only return the top 10 documents\n```\nUser.documents.limit(10).all()\n```\n\nChain the query methods\n```\nUser.documents.filter(city__wc=\"Test*\").sort_by(\"-name\").limit(10).all()\n```\n\nDelete a document\n```\nUser.documents.get(User_id__eq=12345).delete()\n```\n\nBatch delete documents\n```\nUser.documents.filter(name__eq=\"Test Name\").all().delete()\n```\n\n##Documentations\n\nDetailed docs can be found at http://wukong.readthedocs.io/en/latest/\n\n\n\n\n#Release Notes\n\n0.5.1\n==========\n- Only add /solr/ to the end of a solr url if it isn't already there\n\n0.5.0\n==========\n- Simplify the method of making requests, and add logging so it's more visible what's happening (#18)\n- Don't log debugging messages as error messages (#19)\n- Broaden Travis support (#17)\n- Make sure a scheme is always on the solr request (#20)\n\n0.4.0\n==========\n- Add ability to update extraparams like omitHeader for solr requests\n\n0.3.1\n==========\n- Collection alias support\n\n0.2.2\n==========\n- Fix zookeeper cluster state unicode issue\n\n0.2.0\n==========\n- Zookeeper states for Solr 6\n- handle situations with unknown Solr hostnames\n- support stats in the query for Solr 6\n\n0.1.1\n==========\n- Add support for Python 3.x\n\n0.0.3\n==========\n- initial version for wukong\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/SurveyMonkey/wukong", "keywords": "solr cloud solrcloud client python orm", "license": "", "maintainer": "", "maintainer_email": "", "name": "wukong", "package_url": "https://pypi.org/project/wukong/", "platform": "", "project_url": "https://pypi.org/project/wukong/", "project_urls": { "Homepage": "https://github.com/SurveyMonkey/wukong" }, "release_url": "https://pypi.org/project/wukong/0.5.1/", "requires_dist": null, "requires_python": "", "summary": "An ORM Client library for SolrCloud", "version": "0.5.1" }, "last_serial": 4121395, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "fa24f31dfede8c7db53b327feae24a9f", "sha256": "2131765bf4d98ccb64b1d684da8808722b7f608642ded82f587da1ae04810812" }, "downloads": -1, "filename": "wukong-0.0.3.tar.gz", "has_sig": false, "md5_digest": "fa24f31dfede8c7db53b327feae24a9f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23181, "upload_time": "2016-08-31T14:49:27", "url": "https://files.pythonhosted.org/packages/a7/16/7d6dd9be64929ad4274e9d5ba3dd5d78817447a934253d140ae9f47f98b8/wukong-0.0.3.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "ce35c67e35b5cd7dbe23c7e3bd959edc", "sha256": "c81f6912b879790a584fb06758cf826f88df6943adeab7c4c50563dd65cf9e15" }, "downloads": -1, "filename": "wukong-0.1.1.tar.gz", "has_sig": false, "md5_digest": "ce35c67e35b5cd7dbe23c7e3bd959edc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23574, "upload_time": "2016-09-02T02:30:16", "url": "https://files.pythonhosted.org/packages/e1/0c/53b092370368afc4a7cbccd9ff75706a041718fc10bc444fb007aadd24c0/wukong-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1715f2c1919c90edaf0bee2c5d0c32f9", "sha256": "4e5676bc1f082ae6ababb6fe4d0ed6245ae13c6d599ba10cde1b2afff05b775d" }, "downloads": -1, "filename": "wukong-0.2.0.tar.gz", "has_sig": false, "md5_digest": "1715f2c1919c90edaf0bee2c5d0c32f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24635, "upload_time": "2016-09-10T01:48:24", "url": "https://files.pythonhosted.org/packages/c8/e9/ae6fd8bf7850a54da81a256d5a34e2e7b6fe63c1a6eb800555777bafa8d1/wukong-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "ecc69f92483bef35f5c783c1c3c5a0f2", "sha256": "581c4573172013ba659859c6e7c21fb16414043a913ce4b892efa6adb1b01f76" }, "downloads": -1, "filename": "wukong-0.2.2.tar.gz", "has_sig": false, "md5_digest": "ecc69f92483bef35f5c783c1c3c5a0f2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14492, "upload_time": "2017-03-01T17:07:31", "url": "https://files.pythonhosted.org/packages/b8/16/8e893f2472685ae877621faf617be2d41ba21b09ff1dcec54b1bfd0c6d6b/wukong-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "97a445f03689ed9284681490aee6808e", "sha256": "b2e45240cd7006fe6b1dfd3091a377ee705071770c2feb0c483c09602569f6cf" }, "downloads": -1, "filename": "wukong-0.3.0.tar.gz", "has_sig": false, "md5_digest": "97a445f03689ed9284681490aee6808e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14814, "upload_time": "2017-04-13T18:00:51", "url": "https://files.pythonhosted.org/packages/b1/f8/9c22b7c2747ac46301f24dd3ed4c8aa04f9dea9c6d926b10d09e258a2a5f/wukong-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "2590c484fb7da02b966ecd1e9498df73", "sha256": "10e33738e48edb19fd285551c46eda747078b24301ffdba134a9fec7c3cd7a42" }, "downloads": -1, "filename": "wukong-0.3.1.tar.gz", "has_sig": false, "md5_digest": "2590c484fb7da02b966ecd1e9498df73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15098, "upload_time": "2017-04-24T17:17:40", "url": "https://files.pythonhosted.org/packages/5f/47/e48e99bf376f6f0dd4242bb34d0ccb2e60db5800ac705501d52094f1cc45/wukong-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "7c56e3dd1bcc59ca88ba5491a57be3bc", "sha256": "209c1ee34f356e0edd2175dcd5afc63d8f5c17d7792ec34fddee7d213dd5040b" }, "downloads": -1, "filename": "wukong-0.4.0.tar.gz", "has_sig": false, "md5_digest": "7c56e3dd1bcc59ca88ba5491a57be3bc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15193, "upload_time": "2017-10-12T17:25:47", "url": "https://files.pythonhosted.org/packages/7f/67/4c84fad900d79705223cdb636ab1d449d592cb3d60f0dcb526605d7ca676/wukong-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "9dd983a6706d2506f10e57841fa3c443", "sha256": "2b41e216bd2539e0175e11b6166bb81f47ac20a48f1eb4213e0b6222faffad26" }, "downloads": -1, "filename": "wukong-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9dd983a6706d2506f10e57841fa3c443", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15950, "upload_time": "2017-10-31T21:03:33", "url": "https://files.pythonhosted.org/packages/8c/af/88f8c313b9b5f8c4baba14b80e8d09f94f1bf117f00145d24ffdd5090f42/wukong-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "c7bc890637e7725e4b6d607331de7577", "sha256": "ff23d5068f524579ada370101831622f28fdbee46d320a5673f6cb258e45b55e" }, "downloads": -1, "filename": "wukong-0.5.1.tar.gz", "has_sig": false, "md5_digest": "c7bc890637e7725e4b6d607331de7577", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16077, "upload_time": "2017-11-08T17:29:24", "url": "https://files.pythonhosted.org/packages/8f/ff/8bbc1c512d9574187e320924df75d8a441fcec7fed59bdb3e8aefaaac837/wukong-0.5.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c7bc890637e7725e4b6d607331de7577", "sha256": "ff23d5068f524579ada370101831622f28fdbee46d320a5673f6cb258e45b55e" }, "downloads": -1, "filename": "wukong-0.5.1.tar.gz", "has_sig": false, "md5_digest": "c7bc890637e7725e4b6d607331de7577", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16077, "upload_time": "2017-11-08T17:29:24", "url": "https://files.pythonhosted.org/packages/8f/ff/8bbc1c512d9574187e320924df75d8a441fcec7fed59bdb3e8aefaaac837/wukong-0.5.1.tar.gz" } ] }