{ "info": { "author": "Denis Ryzhkov", "author_email": "denisr@denisr.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Provides:\n\n* ``db(sql, *values).row/rows/affected``\n* ``id = db_insert(table_name, _return='id', name=value,..)``\n* ``affected = db_update(table_name, where=dict(name=value, item_in=tuple_of_values), name=value,..)``\n* ``result = db_transaction(code)``\n* ``raise db_rollback``\n* ``db(\"\"\"ALTER TYPE \"my_type\" ADD VALUE 'my_value'\"\"\", autocommit=True) # Avoid \"cannot run inside a transaction block\".``\n* ``db('SELECT * FROM \"table\" WHERE \"name\" LIKE %s', escape_like(fragment))``\n* connection pool blocks only for the first connection - for quick deploy\n* auto reconnect and retry\n* optional log of each query\n\nUsage::\n\n sudo apt-get install --yes gcc libevent-dev libpq-dev python-dev\n sudo pip install pg4geks\n\n from pg4geks import db, db_config, db_insert, db_update, db_transaction\n db_config(name='test', user='user', password='password')\n # Defaults: host='127.0.0.1', port=5432, pool_size=10, patch_psycopg2_with_gevent=True, log=None\n\n row = db('SELECT \"column\" FROM \"table\" WHERE \"id\" = %s', id).row\n assert row is None or row.column == row['column']\n\n return db('SELECT * FROM \"table\" WHERE \"related_id\" IN %s AND \"parent_id\" = %s', tuple(related_ids), parent_id).rows\n # Please note that \"tuple()\" should be used with \"IN %s\", to keep \"list []\" for PostgreSQL Array operations.\n # http://pythonhosted.org/psycopg2/usage.html#adaptation-of-python-values-to-sql-types\n\n return [\n processed(row)\n for row in db('SELECT * FROM \"table\" LIMIT 10')\n ] # Please note that no \").rows\" is required for iteration.\n\n try:\n def code():\n db('INSERT INTO \"table1\" (\"quantity\") VALUES (%s)', -100)\n db('INSERT INTO \"table2\" (\"quantity\") VALUES (%s)', +1/0)\n\n if error:\n raise db_rollback\n\n return result\n result = db_transaction(code)\n\n except db_rollback:\n pass # Or not.\n\n id = db_insert('table',\n related_id=related_id,\n parent_id=parent_id,\n _return='id',\n )\n\n assert db_update('table',\n related_id=None,\n where=dict(id=id), # Or: id=tuple(ids_to_update)\n ) == 1\n\n # See tests for more usage examples.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/denis-ryzhkov/pg4geks", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pg4geks", "package_url": "https://pypi.org/project/pg4geks/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pg4geks/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/denis-ryzhkov/pg4geks" }, "release_url": "https://pypi.org/project/pg4geks/0.2.3/", "requires_dist": null, "requires_python": null, "summary": "PostgreSQL for Gevent kept Simple", "version": "0.2.3" }, "last_serial": 2733703, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "a713ab0d36f8267bcaa92df1811df812", "sha256": "acc392a48b541761940d71aa562f3e1d62a44437be9e33c8f0a0fe3ac5486415" }, "downloads": -1, "filename": "pg4geks-0.1.0.tar.gz", "has_sig": false, "md5_digest": "a713ab0d36f8267bcaa92df1811df812", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4126, "upload_time": "2013-03-19T14:14:21", "url": "https://files.pythonhosted.org/packages/66/de/1eb19c1f2758b1c00f04b5f64df03d60d6d6d1d0c39a4cde630fb25521c1/pg4geks-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "976d8d5847d170464e09d2b838c875e3", "sha256": "a1288ce006775ade00fbedb5c0ae13e3b4bfe7206b5abf5bd2d6baef210835a8" }, "downloads": -1, "filename": "pg4geks-0.1.1.tar.gz", "has_sig": false, "md5_digest": "976d8d5847d170464e09d2b838c875e3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4227, "upload_time": "2014-07-11T17:56:13", "url": "https://files.pythonhosted.org/packages/cf/7b/f8e704131c0c14f0531806dfef956e50e9fbca29cce3ab05628292e002ee/pg4geks-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d3283d304a08dfb60054520069424d8c", "sha256": "2b1810afc9d55266294b57029a2e743e698f44c6e85eba32dc602858655cd458" }, "downloads": -1, "filename": "pg4geks-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d3283d304a08dfb60054520069424d8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5184, "upload_time": "2016-08-05T05:43:04", "url": "https://files.pythonhosted.org/packages/00/19/34f30821050a1cff740fd00cfac416ab031577b0dce5c6aefa46ce2ac867/pg4geks-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "bfa89e809a5bbd6855833e33ebc0302b", "sha256": "608116e8a093302486272aeb979c23527ec8ebf56ef73cb0d4a0c8baeff58a96" }, "downloads": -1, "filename": "pg4geks-0.2.1.tar.gz", "has_sig": false, "md5_digest": "bfa89e809a5bbd6855833e33ebc0302b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5253, "upload_time": "2016-08-15T09:24:54", "url": "https://files.pythonhosted.org/packages/27/3d/ef45c3e657f3715489a6a1a25cbaab7784618c80ffd0aea7801363d3cda2/pg4geks-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "57d2a6e75901748f5ea1952b0487335c", "sha256": "84a50b2e9f78c93de0cb9e74f74627adeb9cbd3502b9ad3fab257f9ddd6d72a1" }, "downloads": -1, "filename": "pg4geks-0.2.2.tar.gz", "has_sig": false, "md5_digest": "57d2a6e75901748f5ea1952b0487335c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5269, "upload_time": "2016-09-30T13:44:17", "url": "https://files.pythonhosted.org/packages/84/e3/44453c7592d54b5ee648ce6fa9687cba6bb3334dd0c002a5df5632e29aed/pg4geks-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "b79064e37961eb26b8b6b3a1aafe6b31", "sha256": "2a01e47aa43f528d2edae6e2e11a2db2ce7d89604d8adb66a22787674e2961cc" }, "downloads": -1, "filename": "pg4geks-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b79064e37961eb26b8b6b3a1aafe6b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5277, "upload_time": "2017-03-27T15:00:44", "url": "https://files.pythonhosted.org/packages/2e/a3/5cb43d79eeeb0714c7692cb1ca54fa21a60a8e69b2176641d476720e1e64/pg4geks-0.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b79064e37961eb26b8b6b3a1aafe6b31", "sha256": "2a01e47aa43f528d2edae6e2e11a2db2ce7d89604d8adb66a22787674e2961cc" }, "downloads": -1, "filename": "pg4geks-0.2.3.tar.gz", "has_sig": false, "md5_digest": "b79064e37961eb26b8b6b3a1aafe6b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5277, "upload_time": "2017-03-27T15:00:44", "url": "https://files.pythonhosted.org/packages/2e/a3/5cb43d79eeeb0714c7692cb1ca54fa21a60a8e69b2176641d476720e1e64/pg4geks-0.2.3.tar.gz" } ] }