{ "info": { "author": "skyduy", "author_email": "cuteuy@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "# dblink\n\n[![PyPI version](https://badge.fury.io/py/dblink.svg)](https://badge.fury.io/py/dblink)\n[![Build Status](https://travis-ci.org/skyduy/dblink.svg?branch=master)](https://travis-ci.org/skyduy/dblink)\n\n> Aimed for easily using query, insert, update and delete with an exist table, the filter query syntax likes Django's. You can find out the simple usage in the code below.\n\n## Introduction\nSuppose you have two tables: `users` and `addresses` created by:\n\n```sql\nCREATE TABLE users (\n id INTEGER NOT NULL,\n name VARCHAR(50),\n fullname VARCHAR(50),\n password VARCHAR(12),\n PRIMARY KEY (id)\n);\n\nCREATE TABLE addresses (\n id INTEGER NOT NULL,\n email_address VARCHAR NOT NULL,\n user_id INTEGER,\n PRIMARY KEY (id),\n FOREIGN KEY(user_id) REFERENCES users (id)\n);\n```\n\nYou can link to exist table in database using [Database Urls](http://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls).\n\n```python\nfrom dblink import Database, Table\ndb = Database(url='sqlite:///:memory:')\nuser_table = Table('users', db)\n# ...\ndb.close()\n\nwith Database(url='postgresql://scott:tiger@localhost/mydatabase') as db:\n address_table = Table('addresses', db)\n # ...\n```\n\nHere is a simple example.\n\n```python\n\"\"\"\nSuppose you have two table: users and addresses.\n\"\"\"\nfrom dblink import Database, Table\n\n\nwith Database('sqlite:///:memory:') as db:\n table_user = Table('users', db)\n table_address = Table('addresses', db)\n\n # show description\n print(table_user.description)\n print(table_address.description)\n\n # chain query, you can call delete on the single table result\n table_user.query.filter(id=1).one_or_none()\n\n table_user.query.filter(id__gte=2) \\\n .order_by('name') \\\n .values_list('id', 'name')\n\n table_user.query.filter(id__in=[1, 2, 3]) \\\n .filter(name__startswith='Yu').all()\n\n table_user.query.order_by('-name') \\\n .values_list('fullname', flat=True, distinct=True)\n\n table_user.query.distinct('name').values_list('name', flat=True)\n\n table_user.query.filter(id__in=[1, 2, 3]).delete()\n\n # join query\n table_user.join(table_address) \\\n .filter(id__lt=10000) \\\n .filter(email_address__contains='gmail') \\\n .filter(**{'addresses.id__gte': 100}) \\\n .values_list('user_id', 'name', 'email_address',\n table_address.id, 'users.fullname')\n\n # get or insert\n instance, create = table_user.get_or_insert(id=1, name='jone')\n\n # single record operation.\n table_user.insert({'id': 1, 'name': 'YuJun', 'password': 'psw'})\n\n table_user.update({'id': 1, 'name': 'skyduy', 'password': 'psw'},\n unique_fields=['id'], update_fields=['name', 'password'])\n\n table_user.insert_or_update(\n {'id': 1, 'name': 'skyduy', 'password': 'psw'},\n unique_fields=['id'], update_fields=['name', 'password']\n )\n\n table_user.delete({'id': 1, 'name': \"I don't matter\"},\n unique_fields=['id'])\n\n # bulk operation\n items = [{'id': 1, 'name': 'yujun', 'password': 'haha'},\n {'id': 2, 'name': 'skyduy', 'password': 'aha'},]\n unique_fields = ['id']\n update_fields = ['name']\n table_user.bulk_insert(items)\n table_user.bulk_delete(items, unique_fields)\n table_user.bulk_update(items, unique_fields, update_fields)\n table_user.bulk_insert_or_update(items, unique_fields, update_fields)\n```\n\n## History\n### V0.3.0 (2019/09/08)\n- Update requirements for security.\n- Fix the installation bugs on windows.\n\n### V0.2.1 (2018/05/09)\n\n- Add encoding option.\n- Improve package dependence.\n\n### V0.2.0 (2018/03/24)\n\n- Bug fix.\n - Error closing cursor when operation on local sqlite db.\n - Bugs in bulk_insert_or_update.\n\n- Improve Error tips.\n\n### V0.1.2 (2018/02/05)\n\n- Initial release.", "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/skyduy/dblink", "keywords": "sql orm dblink", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "dblink", "package_url": "https://pypi.org/project/dblink/", "platform": "", "project_url": "https://pypi.org/project/dblink/", "project_urls": { "Homepage": "https://github.com/skyduy/dblink" }, "release_url": "https://pypi.org/project/dblink/0.3.0/", "requires_dist": null, "requires_python": "", "summary": "DBLink tools makes operation on exists table easier.", "version": "0.3.0" }, "last_serial": 5798098, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "5524a7d8a50c16939e76eac24addbf45", "sha256": "80d451e06d086fe656554b0e5162cf8475139b6340b332448b76da2d37095aed" }, "downloads": -1, "filename": "dblink-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "5524a7d8a50c16939e76eac24addbf45", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 8917, "upload_time": "2018-02-05T07:33:14", "url": "https://files.pythonhosted.org/packages/01/ec/c62151b02b01315d76e58c1d61ebb674ac763f121228b7a5b2ed55c5fffd/dblink-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7aee01e89780d5e242a4e22294af84a", "sha256": "319d99ca4144d750b293ee3f660b7547fed1b864deb45cdeeb011d6939f04870" }, "downloads": -1, "filename": "dblink-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c7aee01e89780d5e242a4e22294af84a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6514, "upload_time": "2018-02-05T07:32:56", "url": "https://files.pythonhosted.org/packages/df/72/ea2068071839198c0d5922a87c87f80624174c29932ab1818db0b013b9e1/dblink-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "27622b71bf67919d38500b07d71ac6d2", "sha256": "80eec758d3e0f57ee1bb4b00dbcfb355b4d33f93569fc11f7873389ec36345a3" }, "downloads": -1, "filename": "dblink-0.2.0.tar.gz", "has_sig": false, "md5_digest": "27622b71bf67919d38500b07d71ac6d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6927, "upload_time": "2018-03-26T05:56:17", "url": "https://files.pythonhosted.org/packages/55/b2/fff1eb3f46da694c727acb4c8c594a65beafde184550b42f88ce377d8fd3/dblink-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "7c58c20052e6ab8a2b43e06029925404", "sha256": "fbc44926995bb1b3a477313b25853168a11f22e30bd8435006c6aa5fc0242758" }, "downloads": -1, "filename": "dblink-0.2.1.tar.gz", "has_sig": false, "md5_digest": "7c58c20052e6ab8a2b43e06029925404", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6908, "upload_time": "2018-05-09T04:00:01", "url": "https://files.pythonhosted.org/packages/c0/7f/7e60a407b110459345a087cad0e66b2ad92756075d62ed690d50585f899c/dblink-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7fdc15049e37f5d306fe6a293b68b17e", "sha256": "1683d2f7cfc19a6f5b95a521e1e00c25903018b5f372b41b2d99633fdd64c7f4" }, "downloads": -1, "filename": "dblink-0.3.0.tar.gz", "has_sig": false, "md5_digest": "7fdc15049e37f5d306fe6a293b68b17e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6786, "upload_time": "2019-09-08T02:46:24", "url": "https://files.pythonhosted.org/packages/be/ac/09f4ad930c19df562034198e1c962b499cfb80bc4e41a2255f94c9141e43/dblink-0.3.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7fdc15049e37f5d306fe6a293b68b17e", "sha256": "1683d2f7cfc19a6f5b95a521e1e00c25903018b5f372b41b2d99633fdd64c7f4" }, "downloads": -1, "filename": "dblink-0.3.0.tar.gz", "has_sig": false, "md5_digest": "7fdc15049e37f5d306fe6a293b68b17e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6786, "upload_time": "2019-09-08T02:46:24", "url": "https://files.pythonhosted.org/packages/be/ac/09f4ad930c19df562034198e1c962b499cfb80bc4e41a2255f94c9141e43/dblink-0.3.0.tar.gz" } ] }