{ "info": { "author": "zhouyl", "author_email": "81438567@qq.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Database :: Front-Ends", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "pymysql-connection-manager\n##########################\n\npymysql connection & pool manager for python3\n\n\nRefactor pymysql connection\n===========================\n\nNew features\n------------\n\n1. Parameter 'charset' default is utf8\n#. Parameter 'autocommit' default is True\n#. Added parameter 'timezone', default is '+00:00'\n#. Use pymysql.cursors.DictCursor by default\n#. Reconnect after the database connection is lost\n#. Add logs for creating connections, mysql warnings, exceptions, database queries, etc.\n#. Using the with...as syntax for transaction operations\n#. Provide simplified query methods such as fetch_all/fetch_row/fetch_column/fetch_first\n#. Provide simplified methods such as insert/insert_many/update/delete\n\n1. Create pymysql connection\n----------------------------\n\n.. code-block:: python\n\n import pymysql\n from pymysql_manager import Connection\n\n conn = Connection(host='192.0.0.1', database='foo', timezone='+8:00')\n\n2. Transaction\n--------------\n\nBefore code:\n\n.. code-block:: python\n\n try:\n conn.begin()\n conn.execute(....)\n catch Exception:\n conn.rollback()\n else:\n conn.commit()\n\nNow:\n\n.. code-block:: python\n\n with conn.transaction():\n conn.execute(...)\n\n3. Fetch rowsets\n----------------\n\n.. code-block:: python\n\n # executed: select * from foo where id between 5 and 10\n all_rows = conn.fetch_all('select * from foo where id between %s and %s', 5, 10)\n\n # executed: select * from foo limit 1\n first_row = conn.fetch_row('select * from foo')\n\n # executed: select * from foo limit 1\n first_column_on_first_row = conn.fetch_first('select * from foo')\n\n # executed: select * from foo limit 1\n third_column_on_first_row = conn.fetch_column('select * from foo', column=3)\n\n4. Fetch by Iterator\n--------------------\n\nWhen a result is large, it may be used **SSCursor**. But sometimes using **limit ... offset ...** can reduce the pressure on the database\n\n\nby SSCursor\n\n.. code-block:: python\n\n cursor = conn.cursor(pymysql.cursors.SSCursor)\n conn.execute(sql)\n while True:\n row = cursor.fetchone()\n if not row:\n break\n\nby fetch_iterator\n\n.. code-block:: python\n\n for row in conn.fetch_iterator(sql, per=1000, max=100000):\n print(row)\n\n5. Single/Bulk Insert or Replace | Update | Delete\n--------------------------------------------------\n\n.. code-block:: python\n\n # insert ignore into mytable (foo, bar) values (1, 2)\n db.insert('insert ignore into mytable', foo=1, bar=2)\n\n # insert ignore into mytable (foo, bar) values (1, 2) on duplicate key update ...\n db.insert('insert ignore into mytable on duplicate key update ...', **dict(foo=1, bar=2))\n\n # insert ignore into mytable (id, name) values (1, 'foo'), (2, 'bar') on duplicate key update ...\n db.insert_many('insert ignore into mytable on duplicate key update ...', ['id', 'name'], [(1, 'foo'), (2, 'bar')])\n\n # update mytable set foo=1, bar=2 where id between %s and %s\n db.update('update mytable where id between %s and %s', 10, 5, foo=1, bar=2)\n db.update('update mytable where id between %s and %s', [10, 5], foo=1, bar=2)\n db.update('update mytable where id between %s and %s', *[10, 5], **dict(foo=1, bar=2))\n\n # update from mytable where id between %s and %s\n db.delete('delete from mytable id between %s and %s', 10, 5)\n db.delete('delete from mytable id between %s and %s', [10, 5])\n\n\nConnection Pool\n===============\n\n1. Create connection pool\n-------------------------\n\n.. code-block:: python\n\n from pymysql_manager import ConnectionPooled\n pooled = ConnectionPooled(host='192.0.0.1', database='foo', \n pool_options=dict(max_size=10, max_usage=100000, idle=60, ttl=120))\n\n2. Execute SQL without the connection pool\n------------------------------------------\n\n.. code-block:: python\n\n pooled.execute(sql)\n pooled.connection.execute(sql)\n\n3. Using connection pool to execute SQL\n---------------------------------------\n\n.. code-block:: python\n\n with pooled.pool() as connection:\n connection.execute(sql)\n\n\nConnection Manager\n==================\n\n1. Configuration\n----------------\n\n.. code-block:: python\n\n from pymysql_manager import ConnectionManager\n m = ConnectionManager(default='foo',\n foo=dict(host='192.0.0.1', database='foo', user='root', passwd=''),\n bar=dict(host='192.0.0.1', database='bar', user='root', passwd=''))\n\n2. Get a connection\n-------------------\n\n.. code-block:: python\n\n m.execute(sql) # use default connection\n m['foo].execute(sql)\n m.connection('foo').exeucte(sql)\n\n3. Get a connection from connection pool\n----------------------------------------\n\n.. code-block:: python\n\n with m.pool() as connection: pass # use default connection\n with m['foo'].pool() as connection: pass\n with m.connection('foo').pool() as connection: pass\n\n\nLicense\n=======\n\nThe MIT License (MIT). Please see License File for more information.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/zhouyl/pymysql-connection-manager", "keywords": "mysql,pymysql,mysql-connection,mysql-pool,pool,connection-manager", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pymysql-manager", "package_url": "https://pypi.org/project/pymysql-manager/", "platform": "", "project_url": "https://pypi.org/project/pymysql-manager/", "project_urls": { "Homepage": "https://github.com/zhouyl/pymysql-connection-manager" }, "release_url": "https://pypi.org/project/pymysql-manager/0.0.2/", "requires_dist": [ "PyMySQL (>=0.8.0)", "connection-pool (>=0.0.1)" ], "requires_python": "", "summary": "pymysql connection & pool manager for python3", "version": "0.0.2" }, "last_serial": 3949395, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "0ac9dd661ad67d41250bfa4b4a1aeb49", "sha256": "0083d7f33b029f7500fec2dfba2c9b10eac6198cde2251d128b2ec2a8e655c24" }, "downloads": -1, "filename": "pymysql_manager-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0ac9dd661ad67d41250bfa4b4a1aeb49", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6318, "upload_time": "2018-06-08T09:20:37", "url": "https://files.pythonhosted.org/packages/c1/4c/70105b66476a2bdcfea21e4a34291b6f2520ee4d7467204b5eaf6f0f9eca/pymysql_manager-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef32651c537c18c6d28767373871a4fe", "sha256": "2f2b39dad0e57e5ccaa3c40a63b5a20621edb1f6670150ff5d59bde436a04227" }, "downloads": -1, "filename": "pymysql_manager-0.0.1.tar.gz", "has_sig": false, "md5_digest": "ef32651c537c18c6d28767373871a4fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6019, "upload_time": "2018-06-08T09:20:38", "url": "https://files.pythonhosted.org/packages/c5/c4/44902ae1338413564b516f814a546260ab424b937f636370c4a859a2dc17/pymysql_manager-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "b18d8cbe39e4b5782669bd1605d08f88", "sha256": "9d43407ea96a4929a651073f24c837d8ea0e3cd6a346df82c79d4d35f55a9238" }, "downloads": -1, "filename": "pymysql_manager-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b18d8cbe39e4b5782669bd1605d08f88", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7823, "upload_time": "2018-06-11T08:45:35", "url": "https://files.pythonhosted.org/packages/2c/bd/ea4a95f68987cd7b870fda8cd218eeb6f632586f58e5d0e82963b550495d/pymysql_manager-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d8861fb532d663dedcc58b47233ec5b", "sha256": "32a4500756313384601e2bc3cd34b734ac07ae8c2f7ddecff5aaf90ace3a6cd1" }, "downloads": -1, "filename": "pymysql_manager-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8d8861fb532d663dedcc58b47233ec5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8286, "upload_time": "2018-06-11T08:45:37", "url": "https://files.pythonhosted.org/packages/85/1c/a90903f3f775fad223f2e9995a3ac04a4b6be19e68508b6434fbb893e648/pymysql_manager-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b18d8cbe39e4b5782669bd1605d08f88", "sha256": "9d43407ea96a4929a651073f24c837d8ea0e3cd6a346df82c79d4d35f55a9238" }, "downloads": -1, "filename": "pymysql_manager-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b18d8cbe39e4b5782669bd1605d08f88", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7823, "upload_time": "2018-06-11T08:45:35", "url": "https://files.pythonhosted.org/packages/2c/bd/ea4a95f68987cd7b870fda8cd218eeb6f632586f58e5d0e82963b550495d/pymysql_manager-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d8861fb532d663dedcc58b47233ec5b", "sha256": "32a4500756313384601e2bc3cd34b734ac07ae8c2f7ddecff5aaf90ace3a6cd1" }, "downloads": -1, "filename": "pymysql_manager-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8d8861fb532d663dedcc58b47233ec5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8286, "upload_time": "2018-06-11T08:45:37", "url": "https://files.pythonhosted.org/packages/85/1c/a90903f3f775fad223f2e9995a3ac04a4b6be19e68508b6434fbb893e648/pymysql_manager-0.0.2.tar.gz" } ] }