{ "info": { "author": "\u8bd7\u4eba\u732b\u767d\u767d", "author_email": "cmaye@foxmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy" ], "description": "\n\n\n# \u6b22\u8fce\u4f7f\u7528longan-sqlite3 v1.0 \n------\n\n\u6211\u4eec\u7406\u89e3\u60a8\u9700\u8981\u66f4\u4fbf\u6377\u66f4\u9ad8\u6548\u66f4\u8f7b\u91cf\u7ea7\u7684\u5de5\u5177\u8bb0\u5f55\u6570\u636e\uff0c\u5e76\u5c06\u5176\u4e2d\u627f\u8f7d\u7684\u4ef7\u503c\u4f20\u64ad\u7ed9\u4ed6\u4eba\uff0c**longan-sqlite3** \u662f\u6211\u4eec\u7ed9\u51fa\u7684\u7b54\u6848 \u2014\u2014\u2014\u2014 \u8ba9\u60a8\u968f\u5fc3\u6240\u6b32\u7684\u5b8c\u6210\u5982\u4e0b\u529f\u80fd\n\n**Python version >= 3.6**\n> * Create\n> * Research\n> * Update\n> * Delete\n\n![longan-sqlite3-logo](https://img-blog.csdn.net/20180329103235613)\n\n\n\n> \u60a8\u73b0\u5728\u770b\u5230\u7684\u8fd9\u4e2a longan-sqlite3 \u7248\u672c\uff0c\u4e3a\u6b63\u5f0f\u7248\uff0c\u4ee5\u53d1\u5e03\u81f3pypi\n\n> 1.0 \u6b63\u5f0f\u53d1\u5e03\u81f3pypi\n\n> 0.8 \u4fee\u590d\u83b7\u53d6\u8868\u4e3b\u952e\u7684\u65b9\u5f0f\uff0c\u5e76\u589e\u52a0\u4e86 Kernel \u548c FastFlesh \u4ee5\u7b80\u5316\u64cd\u4f5c\n\n> 0.7 \u65b0\u589e\u521b\u5efa\u8868\n\n> 0.6 \u65b0\u589e\u6392\u5e8f\u548c\u5206\u9875\u7684\u51fd\u6570\uff0c\u652f\u6301\u4e86\u51e0\u4e4e\u6240\u6709\u805a\u5408\u51fd\u6570\n\n> 0.5 where\u5b50\u53e5\n> 1.\u65b0\u589e between \u548c in \u7684\u652f\u6301, \u65b0\u589e\u65b9\u6cd5\uff1b\n> 2.\u63d0\u4f9blike\u8868\u8fbe\u5f0f\u5ffd\u7565\u5927\u5c0f\u5199\u7684\u529f\u80fd\n> init\u65b9\u6cd5\u63d0\u4f9bdebug\u6a21\u5f0f\uff0c\u53ef\u4ee5\u6253\u5370sql\u8bed\u53e5\n\n> 0.4 \u65b0\u589eAPI\u6587\u6863\n\n> 0.3 \u65b0\u589e\u5206\u7ec4\u805a\u5408\u51fd\u6570\n\n> 0.2 \u4fee\u590d\u4e86\u4e3b\u952e\u5224\u65ad\uff0c\u4fee\u590d\u4e86handler\u63a5\u53e3\n------\n\n## \u4ec0\u4e48\u662f longan\n\nlongan \u662f\u4e00\u79cd\u6c34\u679c\uff0c\u5f88\u751c\uff0c\u559c\u6b22\u7684\u4eba\u5403\u5f88\u591a\uff0c\u4e0d\u559c\u6b22\u7684\u4eba\u4e00\u5403\u5c31\u4e0a\u706b\uff01\n\n### 1. \u4ee5\u4e0b\u662f\u6211\u4eec\u8ba1\u5212\u4e2d\u7684\u529f\u80fd \n\n- [x] \u652f\u6301 CRUD\n- [x] \u652f\u6301 \u5206\u7ec4\u805a\u5408\u51fd\u6570\n- [x] \u4fee\u590d API\u6587\u6863\n- [x] \u65b0\u589e where \u8bed\u53e5\u652f\u6301\n\n### 2. \u4ee5\u4e0b\u662f\u6211\u4eec\u7684\u884c\u4e3a\u5b88\u6052\u516c\u5f0f\n\nlongan=mc^2\n\n### 3. \u4f7f\u7528\u65b9\u6cd5\n\n - \u5b89\u88c5\n```shell\npip install longan_sqlite\n```\n\n - \u5bfc\u5165longan\n```python\nfrom longan_sqlite import Longan, Flesh\n```\n - \u521d\u59cb\u5316longan\n```python\nLongan.init('test.db', True)\n```\n - \u5b9e\u4f8b\u5316longan\n```python\nlongan = Longan('company')\n```\n - \u5bfc\u5165\u6570\u636e\u5e93\uff08\u6b64\u5904\u4f1a\u5728\u65e5\u540e\u7684\u7248\u672c\u4e2d\u8fdb\u884c\u62bd\u8c61\uff09\n```python\nlongan.execute_file('company.sql')\n```\n - \u5176\u4e2d\u7684\u8868\u7ed3\u6784 company.sql\n```sql\nCREATE TABLE IF NOT EXISTS COMPANY(\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n name TEXT NOT NULL,\n age INT NOT NULL,\n address CHAR(50),\n salary REAL\n);\n```\n - Create\n```python\nflesh = Flesh(name='emperor', age=23, address='\u5317\u4eac', salary=10)\nlongan.insert_or_update(flesh)\n```\n - Update\n```python\nflesh.age += 1\nflesh.salary += 5\nlongan.insert_or_update(flesh)\n```\n - Query\n```python\nret = longan.where(age_gt=18, salary_elt=100, salary_gt=0).query()\nfor r in ret:\n print(r)\n```\n - Delete\n```python\n# \u67e5\u8be2\nret = longan.where(age_gt=18, salary_elt=100, salary_gt=0).query()\n\nfor r in ret:\n print(r)\n if r.name == 'jobs':\n # \u901a\u8fc7\u5bf9\u8c61\u8fdb\u884c\u5220\u9664\n longan.delete(r)\n\n# \u901a\u8fc7\u6761\u4ef6\u8fdb\u884c\u5220\u9664\nlongan.where(id_gt=0).delete()\n```\n - 0.3\u65b0\u589e\u5206\u7ec4\u805a\u5408\u67e5\u8be2\n```python\nlongan.aggregate(age_max=\"maxAge\", salary_min=\"minSalary\")\nlongan.where(age_gt=5)\nlongan.group_by('address')\nret = longan.query()\nfor r in ret:\n print(r)\n```\n### 4. API\u6587\u6863\n\n| \u63a5\u53e3 | \u53c2\u6570 | \u8bf4\u660e |\n| :--------: | :-----: | :---- |\n| init | db_path, debug | \u521d\u59cb\u5316\u6570\u636e\u5e93\u6587\u4ef6\uff0c\u5f00\u542fdebug\u6a21\u5f0f\u540e\uff0c\u5c06\u4f1a\u6253\u5370sql\u8bed\u53e5 |\n| select | - | \u672a\u5f00\u653e\uff0c\u5f53\u524d\u7248\u672c\u9ed8\u8ba4\u4e3a\u9009\u62e9\u5168\u90e8\u5b57\u6bb5\uff0c\u9664\u975e\u4f7f\u7528\u805a\u5408\u51fd\u6570 |\n| from_table | table_name | \u6307\u5b9a\u67e5\u8be2\u8868 |\n| where | **field_condition | \u501f\u9274\u4e86Django\u4e2d\u67e5\u8be2\u7684\u64cd\u4f5c\uff0c\"_\"\u524d\u4e3a\u5b57\u6bb5\u540d\uff0c\u540e\u4e3a\u8868\u8fbe\u5f0f\uff0c\u9700\u8981\u4f20\u9012\u503c |\n| insert_or_update | *field_obj | \u5c06\u4e00\u4e2a\u6216\u591a\u4e2aFlesh\u5bf9\u8c61\u63d2\u5165\u6216\u66f4\u65b0\u5230\u8868\u4e2d\uff0c\u4f1a\u81ea\u52a8\u4e3a\u5bf9\u8c61\u6dfb\u52a0\u4e3b\u952e |\n| insert | *field_obj | \u5c06\u4e00\u4e2a\u6216\u591a\u4e2aFlesh\u5bf9\u8c61\u63d2\u5165\u5230\u8868\u4e2d\uff0c\u4f1a\u81ea\u52a8\u4e3a\u5bf9\u8c61\u6dfb\u52a0\u4e3b\u952e |\n| update | *field_obj | \u5c06\u4e00\u4e2a\u6216\u591a\u4e2aFlesh\u5bf9\u8c61\u66f4\u65b0\u5230\u8868\u4e2d|\n| delete | *field_obj | \u53ef\u4ee5\u901a\u8fc7where\u65b9\u6cd5\u6765\u6839\u636e\u6761\u4ef6\u6765\u8fdb\u884c\u5220\u9664\uff0c\u4e5f\u53ef\u4ee5\u5bf9\u4e00\u4e2a\u6216\u591a\u4e2aFlesh\u5bf9\u8c61\u76f4\u63a5\u5220\u9664\uff0c\u524d\u63d0\u662f\u5bf9\u8c61\u62e5\u6709\u4e3b\u952e |\n| group_by | field | \u5bf9\u6307\u5b9a\u5b57\u6bb5\u8fdb\u884c\u5206\u7ec4 |\n| aggregate | **field_condition | \u53ef\u4ee5\u53c2\u8003where\u8bed\u53e5\uff1a\u5b57\u6bb5\u540d_**\u805a\u5408\u51fd\u6570\u540d**=\"\u522b\u540d\" |\n| query | - | \u67e5\u8be2\uff0c\u9700\u8981\u7ec4\u5408\u4f7f\u7528 |\n| primary_key | - | \u4e3b\u952e |\n| ignore_case | ignore | \u662f\u5426\u5ffd\u7565\u5927\u5c0f\u5199 |\n| limit | num, offset | \u5206\u9875 |\n| order_by | field, desc |\u6839\u636e\u5b57\u6bb5\u8fdb\u884c\u6392\u5e8f |\n\n### 5. Where\u5b50\u53e5\u64cd\u4f5c\u8868\u8fbe\u5f0f\n| \u64cd\u4f5c\u7b26 | \u8fd0\u7b97\u7b26 | \u8bf4\u660e |\n| :--------: | :-----: | :---- |\n| gt | > | \u5927\u4e8e |\n| lt | < | \u5c0f\u4e8e |\n| eq | = | \u7b49\u4e8e |\n| neq | != | \u4e0d\u7b49\u4e8e |\n| egt | >= | \u4e0d\u5c0f\u4e8e |\n| elt | <= | \u4e0d\u5927\u4e8e |\n| like | LIKE | \u5b57\u7b26\u4e32\u6a21\u7cca\u67e5\u8be2 |\n| in | IN | \u96c6\u5408\u67e5\u8be2\uff0c\u53c2\u6570\u4f20\u503c\u4e3atuple\uff0c\u5982: age_in=(28, 29, 30) |\n| between | BETWEEN | \u4ecb\u4e8e\u4e24\u503c\u4e4b\u95f4\uff0c\u53c2\u6570\u4f20\u503c\u4e3a\u4e24\u4e2a\u5143\u7d20\u7684tuple,\u5982\u6709\u591a\u4e2a\u5219\u53d6\u7b2c\u4e00\u4e2a\u548c\u6700\u540e\u4e00\u4e2a\uff0c\u5982\uff1aage_between=(28, 30) |\n\n\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/myemperor/longan-sqlite3", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "longan-sqlite", "package_url": "https://pypi.org/project/longan-sqlite/", "platform": "", "project_url": "https://pypi.org/project/longan-sqlite/", "project_urls": { "Homepage": "https://github.com/myemperor/longan-sqlite3" }, "release_url": "https://pypi.org/project/longan-sqlite/1.3/", "requires_dist": null, "requires_python": ">=3.6.0", "summary": "\u6211\u4eec\u7406\u89e3\u60a8\u9700\u8981\u66f4\u4fbf\u6377\u66f4\u9ad8\u6548\u66f4\u8f7b\u91cf\u7ea7\u7684\u5de5\u5177\u8bb0\u5f55\u6570\u636e\uff0c\u5e76\u5c06\u5176\u4e2d\u627f\u8f7d\u7684\u4ef7\u503c\u4f20\u64ad\u7ed9\u4ed6\u4eba\uff0clongan-sqlite3 \u662f\u6211\u4eec\u7ed9\u51fa\u7684\u7b54\u6848", "version": "1.3" }, "last_serial": 5335331, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "cbaca21d8c47c46963a884d9ca791b84", "sha256": "ae5c636f9a7f78ffe57d36ee4f1c574f319de0ae582c9c8658725038dda54ce8" }, "downloads": -1, "filename": "longan_sqlite-1.1.tar.gz", "has_sig": false, "md5_digest": "cbaca21d8c47c46963a884d9ca791b84", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 10290, "upload_time": "2019-02-15T04:00:49", "url": "https://files.pythonhosted.org/packages/4b/44/dffdf4c57a22d987dee784b3ebc3dccc94f808d37c852067818b534a2444/longan_sqlite-1.1.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "82340be2cc2a1f92f7603410f272b451", "sha256": "bca1a9a5dc623dc1790cfbb33c4014a13a135ee73236e3a74c80598f2f68cb78" }, "downloads": -1, "filename": "longan_sqlite-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "82340be2cc2a1f92f7603410f272b451", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 14287, "upload_time": "2019-05-30T02:46:55", "url": "https://files.pythonhosted.org/packages/88/71/c1c340a0ebb73a7b32d4c7c58b9d5b44cf5b2c5409f0b8fde40a8d177395/longan_sqlite-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b31deb48d1e09eb0e7593052d9c97c70", "sha256": "6543a681ad15041b7ee9aa249a1777fbfb8d920ac000c8815663c0227f66beba" }, "downloads": -1, "filename": "longan_sqlite-1.3.tar.gz", "has_sig": false, "md5_digest": "b31deb48d1e09eb0e7593052d9c97c70", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9998, "upload_time": "2019-05-30T02:46:57", "url": "https://files.pythonhosted.org/packages/bb/87/c8c3206829dd7e8756fa1ea645e02821a11de84074d4a5f223d3fa9111ff/longan_sqlite-1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "82340be2cc2a1f92f7603410f272b451", "sha256": "bca1a9a5dc623dc1790cfbb33c4014a13a135ee73236e3a74c80598f2f68cb78" }, "downloads": -1, "filename": "longan_sqlite-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "82340be2cc2a1f92f7603410f272b451", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 14287, "upload_time": "2019-05-30T02:46:55", "url": "https://files.pythonhosted.org/packages/88/71/c1c340a0ebb73a7b32d4c7c58b9d5b44cf5b2c5409f0b8fde40a8d177395/longan_sqlite-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b31deb48d1e09eb0e7593052d9c97c70", "sha256": "6543a681ad15041b7ee9aa249a1777fbfb8d920ac000c8815663c0227f66beba" }, "downloads": -1, "filename": "longan_sqlite-1.3.tar.gz", "has_sig": false, "md5_digest": "b31deb48d1e09eb0e7593052d9c97c70", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 9998, "upload_time": "2019-05-30T02:46:57", "url": "https://files.pythonhosted.org/packages/bb/87/c8c3206829dd7e8756fa1ea645e02821a11de84074d4a5f223d3fa9111ff/longan_sqlite-1.3.tar.gz" } ] }