{ "info": { "author": "aiden.li", "author_email": "1334435738@qq.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "# \u524d\u8a00\nPython\u5f00\u53d1\u7684mysql\u94fe\u5f0f\u64cd\u4f5c\uff0cABuilder\u544a\u522b\u7e41\u7410\u7684\u6a21\u578b\u5b9a\u4e49\uff0c\u8282\u7701\u5f00\u53d1\u65f6\u95f4\uff0c\u51e0\u4e4e\u6ca1\u6709\u4efb\u4f55\u8981\u6c42\uff0c\u5bfc\u5165\u76f4\u63a5\u4f7f\u7528\u3002\u4e0e\u5e38\u89c4\u6a21\u578b\u4e0d\u540cABuilder\u4e0d\u9700\u8981\u9884\u5148\u5b9a\u4e49\u8868\u5b57\u6bb5\u3001\u5b57\u6bb5\u7c7b\u578b\u3001\u5b57\u6bb5\u957f\u5ea6\u7b49\u7e41\u7410\u7684\u8bbe\u7f6e\uff0c\u5f53\u7136\u90a3\u6837\u505a\u6709\u5b83\u7684\u4f18\u70b9\u8fd9\u91cc\u5c31\u4e0d\u8bf4\u4e86\uff5e\uff0c\u5404\u5177\u6240\u957f\u53d6\u820d\u770b\u4e2a\u4eba\u3002ABuilder\u652f\u6301\u5165\u76f4\u63a5\u4f7f\u7528\uff0c\u7b80\u5355\u3001\u5feb\u901f\u3001\u4fbf\u6377\n\n# \u5feb\u901f\u5f00\u59cb\n- \u5b89\u88c5 a-sqlbuilder\n```python\npip3 install a-sqlbuilder\n```\n- \u8bbe\u7f6e\u6570\u636e\u914d\u7f6e\u6587\u4ef6\uff08\u53c2\u7167\u6570\u636e\u5e93\u914d\u7f6e\u6587\u4ef6\u8bf4\u660e\uff09\n- \u5f00\u59cb\u4f7f\u7528\n```python\nfrom ABuilder.ABuilder import ABuilder\n\nmodel = ABuilder()\ndata = model.table('tar_user').field(\"username,id\").where({\"username\": [\"like\", \"%M-\u840c%\"]}).limit(0, 1).query()\n```\n# \u4f7f\u7528\u6587\u6863\n\n## \u7b2c\u4e09\u65b9\u5e93\u8981\u6c42\n- pymysql\n- logging\n## \u6570\u636e\u5e93\u914d\u7f6e\u6587\u4ef6\n\u6211\u4eec\u9700\u8981\u5f00\u53d1\u8005\u5728\u9879\u76ee\u66f4\u76ee\u5f55\u4e2d\u52a0\u5165`database.py` \u6570\u636e\u5e93\u914d\u7f6e\u6587\u4ef6\n\n\u786e\u4fdd`from database import database`\u80fd\u83b7\u53d6\u5230\u6570\u636e\u5e93\u914d\u7f6e\u9879\n\n\u914d\u7f6e\u6587\u4ef6\u5b9e\u4f8b:\n```python\nclass Config(object):\n pass\n\nclass Proconfig(Config):\n pass\n\n\nclass Devconfig(Config):\n debug = True\n DATABASE_URI = 'mysql+pymysql://root:root@127.0.0.1:3306/target'\n data_host = '127.0.0.1' \n data_pass = 'root'\n data_user = 'root'\n database = 'target'\n data_port = 3306\n charset = 'utf8mb4'\n\n\ndatabase = Devconfig\n```\n## \u652f\u6301\u51fd\u6570\n\u76ee\u524d\u9879\u76ee\u53ea\u652f\u6301\u4e00\u4e9b\u7b80\u5355\u7528\u6cd5\u5177\u4f53\u5982\u4e0b\n- table \u67e5\u8be2\u8868\n- where where\u6761\u4ef6\n- where_or \u8bbe\u7f6eor\u6761\u4ef6\n- field \u67e5\u8be2\u5b57\u6bb5 \n- limit \u67e5\u8be2\u6761\u6570\n- group \u5206\u7ec4\n- order \u6392\u5e8f\n- join \u8fde\u8868\u67e5\u8be2\n- first \u67e5\u8be2\u5355\u6761\n- query \u67e5\u8be2\u591a\u6761\n- pluck \u67e5\u8be2\u5355\u4e2a\u5b57\u6bb5\n- insert \u63d2\u5165\n- update \u4fee\u6539\n- delete \u5220\u9664\n- select \u6267\u884c\u539f\u751f\u67e5\u8be2\n- commit \u4e8b\u7269\u63d0\u4ea4\n- rollback \u4e8b\u7269\u56de\u6eda\n- get_last_sql \u83b7\u53d6\u6267\u884csql\n- get_insert_id \u83b7\u53d6\u63d2\u5165id\n### table\n> \u8bbe\u7f6e\u67e5\u8be2\u8868\n```python\nfrom ABuilder.ABuilder import ABuilder\ndata = ABuilder().table('user').limit(0,1).query()\nprint(data)\n```\n### where\n> \u8bbe\u7f6ewhere\u6761\u4ef6\n```python\nfrom Amo.ABuilder import ABuilder\nABuilder().table('user').where({\"id\":[\"=\",3]}).first()\n```\n\u591a\u4e2awhere\u6761\u4ef6\n```python\nABuilder().table('user').where({\"id\":['<=',10],\"sex\":[\"=\",\"\u7537\"]}).query()\n# \u6216\u5219\u591a\u4e2awhere\u62fc\u63a5\nABuilder().table('user').where({\"id\":['<=',10]}).where({\"sex\":[\"=\",\"\u7537\"]}).query()\n```\n\u6bd4\u8f83\u7b26\u53f7\u652f\u6301 `=,<>,<,>,<=,>=,in,like`\u7b49\n### where_or\n> \u8bbe\u7f6eor\u6761\u4ef6\n`where_or`\u4f7f\u7528\u65b9\u6cd5\u4e0ewhere\u5927\u540c\u5c0f\u5f02\n```python\nfrom Amo.ABuilder import ABuilder\nABuilder().table('user').where_or({\"id\":[\"=\",3]}).query()\n```\n\u6bd4\u8f83\u7b26\u53f7\u652f\u6301 `=,<>,<,>,<=,>=,in,like`\u7b49\n### field\n> \u8bbe\u7f6e\u67e5\u8be2\u5b57\u6bb5\n```python\nABuilder().table(\"user\").field(\"user_id,sex,user_name\").query()\n# \u4e3e\u4f8bcount\u4f7f\u7528\nABuilder().table(\"user\").field(\"count(*) as count\").query()\n```\n\u4e0d\u8bbe\u7f6efield\u9ed8\u8ba4\u67e5\u8be2\u5168\u90e8\u5b57\u6bb5 `*`,\u67e5\u8be2\u5b57\u6bb5\u4f7f\u7528`,`\u9694\u5f00,\u652f\u6301`count(),sum()`\u7b49\n\n\u6ce8\u610f\uff1a\u4e0d\u652f\u6301\u7c7b\u4f3c`DATE_FORMAT(NOW(),'%m-%d-%Y')`\u8fd9\u7c7b\u5e26\u6709`%`\u7684\u51fd\u6570\n### limit\n>\u67e5\u8be2\u6570\n```python\nABuilder().table(\"user\").limit(0,10).query()\n```\n> `limit` \u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3a\u5f00\u59cb\u67e5\u8be2\u4f4d\u7f6e\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a\u83b7\u53d6\u591a\u5c11\u6761\n### group\n>\u5206\u7ec4\n```python\n# \u6309\u7167\u6027\u522b\u5206\u7ec4\nABuilder().table(\"user\").field(\"count(*) as count\").group('sex').query()\n\n# \u591a\u4e2a\u5206\u7ec4\u4f7f\u7528\nABuilder().table(\"user\").field(\"count(*) as count\").group('sex').group('age').query()\n# sql\u4e3a\uff1aselect count(*) as count from user group by sex,age\n```\n### order\n> \u6392\u5e8f\n```python\nABuilder().table(\"user\").order(\"user_id\",\"desc\").query()\n\n# \u591a\u4e2a\u6392\u5e8f\u503c\nABuilder().table(\"user\").order(\"user_id\",\"desc\").order(\"sex\",'asc').query()\n# sql\u4e3a\uff1aselect * from tar_user order by user_id desc,sex asc\n```\n`order by`\u5148\u540e\u987a\u5e8f\uff1a\u9075\u5faa\u4ece\u5de6\u5230\u53f3\n### join\n> \u8fde\u8868\u67e5\n```python\nABuilder().table('user as u').field('u.id,b.name').join('book b', 'u.id=b.user_id','INNER').where({\"u.id\": ['=', 1]}).query()\n\n# sql\u4e3a\uff1aselect u.id,b.name from user as u INNER JOIN book b on u.id=b.user_id where u.id = 1\n```\njoin\u4e09\u4e2a\u53c2\u6570\u8bf4\u660e\n- \u8868\u540d\n- \u5217\u8868\u6761\u4ef6 \u652f\u6301 `and,or`\n- join\u7c7b\u578b\uff1a`INNER,LEFT,RIGHT,FULL` \u9ed8\u8ba4INNER\n\n\u652f\u6301\u591a\u4e2a\u8fde\u8868\uff0c\u62fc\u63a5\u591a\u4e2ajoin\u5373\u53ef\u3002\u4f8b\u5982:`table('table as t').join('table1 t1','t1.user_id=t.id').join('table2 t2','t1.id=t2.book_id')`\n### first\n>\u67e5\u8be2\u5355\u6761\u8bb0\u5f55\n```python\nfind = ABuilder().table('user').where({\"id\":[\"=\",3]}).first()\nprint(find)\n```\n### query\n>\u67e5\u8be2\u591a\u6761\u8bb0\u5f55\n```python\ndata = ABuilder().table('user').where({\"id\":[\"in\",(1,2,3,4)]}).query()\nprint(data)\n```\n### pluck \n>\u67e5\u8be2\u5355\u4e2a\u5b57\u6bb5\n```python\nuser_id = ABuilder().table('user').where({\"username\":[\"=\",'\u5f20\u4e09']}).pluck('id')\nprint(user_id)\n```\n### insert\n> \u63d2\u5165\u6570\u636e\n```python\nmodel = ABuilder()\nstate = model.table(\"user\").insert({\"username\":\"\u5f20\u4e09\",\"sex\":'\u7537',\"age\":18})\nif state:\n print(\"\u6dfb\u52a0\u6210\u529f\uff01\u81ea\u589eid\uff1a%\" % model.get_insert_id)\nelse:\n print(\"\u6dfb\u52a0\u5931\u8d25\")\n```\n### update\n> \u4fee\u6539\u8bb0\u5f55\n```python\nstate = ABuilder().table(\"user\").where({\"username\":[\"=\",\"\u5f20\u4e09\"]}).update({\"age\":25})\nif state:\n print('\u4fee\u6539\u6210\u529f')\nelse:\n print('\u4fee\u6539\u5931\u8d25')\n\n```\n### delete\n> \u5220\u9664\u8bb0\u5f55\n```python\nstate = ABuilder().table(\"user\").where({\"username\":[\"=\",\"\u5f20\u4e09\"]}).delete()\nif state:\n print('\u5220\u9664\u6210\u529f')\nelse:\n print('\u5220\u9664\u5931\u8d25')\n```\n### select\n>\u6267\u884c\u539f\u751fsql\n```python\nmodel = ABuilder()\n# \u7b2c\u4e00\u79cd\u65b9\u5f0f\nmodel.select(\"SELECT username,id FROM user where id=%s\", [1])\n# \u7b2c\u4e8c\u79cd\u65b9\u5f0f\nmodel.select(\"SELECT username,id FROM user where id=1\")\n```\n### commit\uff0crollback\n> \u4e8b\u7269\u64cd\u4f5c\n```python\nmodel = ABuilder()\nstate = model.table(\"user\").insert({\"username\":\"\u5f20\u4e09\",\"sex\":'\u7537',\"age\":18})\nif state:\n state = model.table(\"book\").insert({\"book_name\":'\u4e66\u672c\u6635\u79f0',\"user_id\":model.get_insert_id})\nif state:\n # \u6210\u529f\u5219\u63d0\u4ea4\u4e8b\u7269\n model.commit()\nelse:\n # \u5931\u8d25\u5219\u56de\u6eda\u4e8b\u7269\n model.rollback()\n```\n\u64cd\u4f5c\u4e8b\u7269\u6ce8\u610f\u4e8b\u9879\uff1a\u8bf7\u52ff\u5b9e\u4f8b\u591a\u4e2aABuilder\u5426\u5219\u4e00\u90e8\u5206\u4e8b\u7269\u5728\u56de\u6eda\u64cd\u4f5c\u65f6\u56de\u6eda\u5931\u8d25\n```python\ndef fun1():\n model = ABuilder()\n state = model.table(\"user\").insert({\"username\":\"\u5f20\u4e09\",\"sex\":'\u7537',\"age\":18})\n if state:\n state = fun2()\n\n if state:\n model.commit()\n else:\n model.rollback()\n\ndef fun2():\n model = ABuilder()\n return model.table(\"book\").insert({\"book_name\":'\u4e66\u672c\u6635\u79f0',\"user_id\":model.get_insert_id})\n\nfun1()\n```\n\u8fd9\u6837\u5982\u679c`fun2()`\u8fd4\u56de\u5931\u8d25\u7684\u662f\u5931\u8d25\u72b6\u6001\u56de\u6eda\u7684\u53ea\u662f`fun1()`\u6267\u884c\u7684sql\u5374\u65e0\u6cd5\u56de\u6eda`fun2()`\u6267\u884c\u7684sql\uff0c\u6b63\u786e\u505a\u6cd5\u5982\u4e0b\uff1a\n```python\ndef fun1():\n model = ABuilder()\n state = model.table(\"user\").insert({\"username\":\"\u5f20\u4e09\",\"sex\":'\u7537',\"age\":18})\n if state:\n state = fun2(model)\n\n if state:\n model.commit()\n else:\n model.rollback()\n\ndef fun2(model):\n return model.table(\"book\").insert({\"book_name\":'\u4e66\u672c\u6635\u79f0',\"user_id\":model.get_insert_id})\n\nfun1()\n```\n### get_last_sql\n> \u83b7\u53d6\u6700\u540e\u4e00\u6761\u6267\u884csql\n```python\n model = ABuilder()\n find = model.table('user').where({\"id\":[\"=\",3]}).first()\n print(model.get_last_sql)\n```\n\u83b7\u53d6sql\u6ce8\u610f\u4e8b\u9879\uff1a\u8f93\u51fa\u7684sql\u5bf9\u4e8e\u5b57\u7b26\u4e32\u6ca1\u6709\u52a0\u4e0a\u5f15\u53f7\uff0c\u5bfc\u81f4\u62f7\u8d1d\u5230\u6570\u636e\u5e93\u7ba1\u7406\u5de5\u5177\u91cc\u65e0\u6cd5\u6267\u884c\uff0c\u5904\u7406\u529e\u6cd5\uff1a\u7ed9\u4e88\u5b57\u7b26\u4e32\u52a0\u4e0a\u5355\u5f15\u53f7\u6216\u53cc\u5f15\u53f7\u5373\u53ef\uff0c\u540e\u9762\u7ef4\u62a4\u4f1a\u4f18\u5316\uff08\u62b1\u6b49\uff09\n### get_insert_id\n> \u83b7\u53d6\u63d2\u5165\u81ea\u589eid\n```python\nmodel = ABuilder()\nmodel.table(\"user\").insert({\"username\":\"\u5f20\u4e09\",\"sex\":'\u7537',\"age\":18})\nprint(model.get_insert_id)\n```\n## class\u7ee7\u627f\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b\n```python\nfrom ABuilder.ABuilder import ABuilder\nclass UserModel(ABuilder):\n\n def __init__(self):\n self.table_name = 'user'\n\n def user_info(self,user_id):\n info = self.table(self.table_name).field(\"user_id,user_name\").where({\"user_id\":user_id}).first()\n print(self.get_last_sql)\n return info\n\n def login(self):\n pass\n\nuserInfo = UserModel().user_info(user_id=1)\nprint(userInfo)\n```\n## \u6848\u4f8b\u9879\u76ee\n### \u76ee\u6807\u8bb0\u8d26+\n!['\u76ee\u6807\u8bb0\u8d26+'](http://poto.adooe.com/target_logo.jpg)\n\n\n\n\u8bb0\u8d26+\u3002\u8bb0\u8d26\u4e0e\u76ee\u6807\u7ed3\u5408\uff0c\u968f\u65f6\u968f\u5730\u8bb0\u5f55\u6bcf\u4e00\u7b14\u4ea4\u6613\uff0c\u4eba\u60c5\u6765\u5f80\uff0c\u591a\u4eba\u8bb0\u8d26\uff0c\u6bcf\u65e5\u8bb0\u8d26\u5b9e\u65f6\u7edf\u8ba1\u4e0e\u76ee\u6807\u8ddd\u79bb\uff0c\u5373\u65f6\u4e86\u89e3\u8d44\u91d1\u6982\u51b5\u8d44\u91d1\u6d41\u5411\n## \u611f\u8c22\n\u9879\u76ee\u521d\u671f\u662f\u975e\u5e38\u7b2c\u4e00\u4e2a\u7b80\u5355\u7248\u672c\uff0c\u5982\u6709\u95ee\u9898\uff0c\u5199\u6cd5\u4e0d\u89c4\u8303\u7684\u6b22\u8fce\u53cd\u9988\uff0c\u5343\u8a00\u4e07\u8bed\uff0c\u4f60\u61c2\u7684\uff0c\u6211\u5c31\u4e0d\u8bf4\u4e86\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/lizhenggan/ABuilder", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "a-sqlbuilder", "package_url": "https://pypi.org/project/a-sqlbuilder/", "platform": "", "project_url": "https://pypi.org/project/a-sqlbuilder/", "project_urls": { "Homepage": "https://github.com/lizhenggan/ABuilder" }, "release_url": "https://pypi.org/project/a-sqlbuilder/0.0.2/", "requires_dist": [ "pymysql (>=0.9.3)" ], "requires_python": "", "summary": "MySQL chained operation of Python development", "version": "0.0.2" }, "last_serial": 5490839, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "815d7432146171cbc4fd88c790b530f7", "sha256": "11f95f4fc7e4cb1b6f2775c6f2319f8337fa679d790fe79fcadecfec15f025dc" }, "downloads": -1, "filename": "a_sqlbuilder-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "815d7432146171cbc4fd88c790b530f7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9239, "upload_time": "2019-05-17T07:58:22", "url": "https://files.pythonhosted.org/packages/a1/7e/5b1efd5df83dc843749021872c54ff59032882b2a554d7662d1d29beb562/a_sqlbuilder-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cce39c4d48e20d154b662f4fed706c31", "sha256": "b13ecea1f61daed96b8d3ac71e8239db7dcb187ae08da2f700e8d7cac719794a" }, "downloads": -1, "filename": "a-sqlbuilder-0.0.1.tar.gz", "has_sig": false, "md5_digest": "cce39c4d48e20d154b662f4fed706c31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7557, "upload_time": "2019-05-17T07:58:25", "url": "https://files.pythonhosted.org/packages/24/dc/9f056ae0ef2c66271caa279269a37f312b255e283fb3b5ebfc1bd2c90cc6/a-sqlbuilder-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "f095b35a7454b3c7ce6fc753e31fb700", "sha256": "1695bf43f6b2e280eb78e0564412077b226d0369746a17ec25761a6e43bed764" }, "downloads": -1, "filename": "a_sqlbuilder-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f095b35a7454b3c7ce6fc753e31fb700", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9563, "upload_time": "2019-07-05T10:56:53", "url": "https://files.pythonhosted.org/packages/b6/4a/65d0f9e998c5d25971c41fb95ea078a7d09d41d39048ae91a40a27fbbfd1/a_sqlbuilder-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "544ede5fb854e46f3a5e25a69c93f99f", "sha256": "3fa78b1ef0acace2ea4219754244e416ee24ad26c40f80e4e90aa9eec386fdbe" }, "downloads": -1, "filename": "a-sqlbuilder-0.0.2.tar.gz", "has_sig": false, "md5_digest": "544ede5fb854e46f3a5e25a69c93f99f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7930, "upload_time": "2019-07-05T10:56:54", "url": "https://files.pythonhosted.org/packages/5c/94/8c4662f517554d2f522ad3aa786fe8cbfcd1d81c315b05287ff3f48b3f9a/a-sqlbuilder-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f095b35a7454b3c7ce6fc753e31fb700", "sha256": "1695bf43f6b2e280eb78e0564412077b226d0369746a17ec25761a6e43bed764" }, "downloads": -1, "filename": "a_sqlbuilder-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f095b35a7454b3c7ce6fc753e31fb700", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9563, "upload_time": "2019-07-05T10:56:53", "url": "https://files.pythonhosted.org/packages/b6/4a/65d0f9e998c5d25971c41fb95ea078a7d09d41d39048ae91a40a27fbbfd1/a_sqlbuilder-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "544ede5fb854e46f3a5e25a69c93f99f", "sha256": "3fa78b1ef0acace2ea4219754244e416ee24ad26c40f80e4e90aa9eec386fdbe" }, "downloads": -1, "filename": "a-sqlbuilder-0.0.2.tar.gz", "has_sig": false, "md5_digest": "544ede5fb854e46f3a5e25a69c93f99f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7930, "upload_time": "2019-07-05T10:56:54", "url": "https://files.pythonhosted.org/packages/5c/94/8c4662f517554d2f522ad3aa786fe8cbfcd1d81c315b05287ff3f48b3f9a/a-sqlbuilder-0.0.2.tar.gz" } ] }