{ "info": { "author": "floatsliang", "author_email": "utavianus@qq.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", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "### sqlorm4es\n\nA simple and expressive (like peewee) sql-like orm for elasticsearch.\n\n#### Examples\n\n* Defining index model in a Django way:\n\n```python\nfrom sqlorm4es import *\n\nclass LogCenter(BaseModel):\n __index__ = 'lala'\n __database__ = {\n \"host\": \"127.0.0.1:9200\"\n }\n\n ok = Boolean(default=True)\n lineno = Integer(required=True)\n message = Text(default='xixi')\n timestamp = Date(name=\"@timestamp\", timezone=\"+8\")\n bigbrother = Object(\n head=Text(),\n hand=Object(\n finger=Float(),\n nail=Boolean()\n )\n )\n```\n\n* Search elasticsearch in a expressive way:\n\n```python\nres = LogCenter.select(LogCenter.ok, LogCenter.lineno, 'max(lineno)') \\\n .where(((LogCenter.ok == False) & (LogCenter.message != 'error')) |\n (LogCenter.timestamp >= '2017-10-12') |\n (LogCenter.bigbrother.head >> ' ( tough; soft, medium soft ) '))\\\n .execute()\n```\n\n* Note that and(&)/or(|) expression in where can be nested\n* Also support group by aggregation: MAX, MIN, AVG, SUM, COUNT...\n* Also support order by, LIMIT, OFFSET:\n\n```python\nres = LogCenter.select('max(lineno)')\\\n .group_by(LogCenter.ok, LogCenter.timestamp)\\\n .order_by((LogCenter.timestamp, 'asc'))\\\n .execute()\n```\n* Manipulate document like a normal python object, value will be validated when assigning it (eg. value in Date Field all stored as UTC):\n```python\nnew_log = LogCenter(ok=False, message='oops', timestamp='2019-10-10')\nnew_log.bigbrother = {\n \"head\": 'tough',\n \"hand\": {\n \"finger\": \"long\",\n \"nail\": \"clean\"\n }\n}\n```\n* Create a single document:\n```python\nnew_log.save()\n```\n* **Insert, Delete, Update and Index operation**: Coming soon...\n\n#### Install\nSqlorm4es has been packaged to pypi, so just need one simple command to install it:\n```shell\npip install sqlorm4es\n```\n\n#### Elasticsearch driver\nSqlorm4es implemented a simple almost lock-free connection pool based on official Elasticsearch client. As it is lock-free, so i am not sure whether it is thread-safe, but it works fine under my own multi-thread tests :)\n* Note that if you did not set config of your model, it will use the default config as below:\n```python\nconfig = {\n 'hosts': ['127.0.0.1:9200'],\n 'maxsize': 20,\n 'sniff_on_start': False,\n 'sniff_on_connection_fail': False,\n 'sniff_timeout': .1,\n 'sniffer_timeout': None,\n 'retry_on_timeout': False,\n 'timeout': 60,\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/floatliang/sqlorm4es", "keywords": "sql orm elasticsearch", "license": "", "maintainer": "", "maintainer_email": "", "name": "sqlorm4es", "package_url": "https://pypi.org/project/sqlorm4es/", "platform": "any", "project_url": "https://pypi.org/project/sqlorm4es/", "project_urls": { "Homepage": "https://github.com/floatliang/sqlorm4es" }, "release_url": "https://pypi.org/project/sqlorm4es/1.1.3/", "requires_dist": null, "requires_python": "", "summary": "A simple, expressive elasticsearch orm", "version": "1.1.3" }, "last_serial": 5991035, "releases": { "1.1.0": [ { "comment_text": "", "digests": { "md5": "64c81a40005517b761168e2497a3974b", "sha256": "585cc54e8f34826296c205d39eb08151eb23efae1e41a70cf9372f5df99eab90" }, "downloads": -1, "filename": "sqlorm4es-1.1.0-py3.6.egg", "has_sig": false, "md5_digest": "64c81a40005517b761168e2497a3974b", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 41921, "upload_time": "2019-10-12T15:18:22", "url": "https://files.pythonhosted.org/packages/ee/4a/aadb29128703563f9504082550b6f70375dc7ab2a14aaa11d0e3ba423305/sqlorm4es-1.1.0-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "5b71584030c825bb35793dc462f6a8b6", "sha256": "88d50f717a5652fe018e9d3539da728aa1a62349354e6ed2cbee10324e9a841a" }, "downloads": -1, "filename": "sqlorm4es-1.1.0.tar.gz", "has_sig": false, "md5_digest": "5b71584030c825bb35793dc462f6a8b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16963, "upload_time": "2019-10-12T15:18:25", "url": "https://files.pythonhosted.org/packages/4d/5e/b4a8546ea426783c0b78020841a975993180e84a135a5eb7bf041f99b4c3/sqlorm4es-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "9f9004497c629698d3e611430c454a0b", "sha256": "82ba9fcfba82ee31722938131148931334dfe113391165b9ce5fc56873204b9b" }, "downloads": -1, "filename": "sqlorm4es-1.1.1.tar.gz", "has_sig": false, "md5_digest": "9f9004497c629698d3e611430c454a0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16956, "upload_time": "2019-10-12T15:43:22", "url": "https://files.pythonhosted.org/packages/7e/35/c4c4e0948714b8d3b71c24aae8d78c5e2446c2ea6a388271f8aef1418fad/sqlorm4es-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "f56970aa6960bd4a1b8fffeaa0f86e98", "sha256": "972802cba685a196ff14f727bdbdff3603c1fe7343dd430adb4b2b689bf2dffe" }, "downloads": -1, "filename": "sqlorm4es-1.1.2.tar.gz", "has_sig": false, "md5_digest": "f56970aa6960bd4a1b8fffeaa0f86e98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17964, "upload_time": "2019-10-13T14:51:35", "url": "https://files.pythonhosted.org/packages/f1/bf/e5f7acc9fdf2b32a2550bafbbf235fe2d7f8416a3f19f7c968a56b7a8d1b/sqlorm4es-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "6b0338698d211a78edcd7bb0c543bc5a", "sha256": "e48e0a2ea9c9e8d7781ef5c06e93190717efb31946b029b4e804dfa9f7e06c42" }, "downloads": -1, "filename": "sqlorm4es-1.1.3.tar.gz", "has_sig": false, "md5_digest": "6b0338698d211a78edcd7bb0c543bc5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18554, "upload_time": "2019-10-17T15:59:36", "url": "https://files.pythonhosted.org/packages/85/11/d7ecbba23a36412356322d2a4c7ce3a7227e3174a0866fc7d9807d4410af/sqlorm4es-1.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6b0338698d211a78edcd7bb0c543bc5a", "sha256": "e48e0a2ea9c9e8d7781ef5c06e93190717efb31946b029b4e804dfa9f7e06c42" }, "downloads": -1, "filename": "sqlorm4es-1.1.3.tar.gz", "has_sig": false, "md5_digest": "6b0338698d211a78edcd7bb0c543bc5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18554, "upload_time": "2019-10-17T15:59:36", "url": "https://files.pythonhosted.org/packages/85/11/d7ecbba23a36412356322d2a4c7ce3a7227e3174a0866fc7d9807d4410af/sqlorm4es-1.1.3.tar.gz" } ] }