{ "info": { "author": "Simon Norris", "author_email": "snorris@hillcrestgeo.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "# pgdata\n\nPython PostgreSQL-PostGIS-SQLAlchemy shortcuts.\n\n[![Build Status](https://travis-ci.org/smnorris/pgdata.svg?branch=master)](https://travis-ci.org/smnorris/pgdata) [![Coverage Status](https://coveralls.io/repos/github/smnorris/pgdata/badge.svg?branch=master)](https://coveralls.io/github/smnorris/pgdata?branch=master)\n\npgdata is a collection of convenience functions for working with PostgreSQL:\n\n- provides an dictionary/JSON-like shortcut interface to database objects without dealing directly with an ORM or cursor (see [dataset](https://dataset.readthedocs.io/en/latest/))\n\n >>> import pgdata\n >>> db = pgdata.connect()\n >>> db.tables\n ['inventory']\n >>> db[\"inventory\"].columns\n ['type', 'supplier', 'cost']\n\n- provides a shortcut to `ogr2ogr` for quickly getting geographic data in and out of your database with sensible defaults and without resorting to shell scripting\n\n\n >>> import pgdata\n >>> db = pgdata.connect()\n >>> db.ogr2pg('airports.shp',\n out_layer='airports_a',\n schema='airport_project')\n >>> db.execute('do stuff')\n >>> db.pg2ogr('SELECT * FROM airports_project.result','GPKG', 'output.gpkg')\n\n\nMuch is copied directly from [dataset](https://dataset.readthedocs.org/) and further inspiration was taken from [pgwrap](https://github.com/paulchakravarti/pgwrap). See also [records](https://github.com/kennethreitz/records) and many others.\n\n## Requirements\n\n- PostgreSQL\n- PostGIS\n- GDAL (optional, for `pg2ogr` and `ogr2pg`)\n- [ESRI File Geodatabase API](http://appsforms.esri.com/products/download/) (optional, for using `pg2ogr` with `FileGDB` option)\n\n## Installation\n\n```\npip install pgdata\n```\n\n## Configuration\n\nCreate an environment variable `DATABASE_URL` and set it to the [SQLAlchemy db url](http://docs.sqlalchemy.org/en/latest/core/engines.html) for your database:\n\nMacOS/Linux etc:\n\n`export DATABASE_URL=postgresql://postgres:postgres@localhost:5432/mydb`\n\nWindows:\n\n`SET DATABASE_URL=\"postgresql://postgres:postgres@localhost:5432/mydb\"`\n\n\n## Usage\n\n```\n>>> import pgdata\n>>> db = pgdata.connect(schema='myschema')\n>>> db.tables\n['inventory']\n>>> db[\"inventory\"].columns\n['type', 'supplier', 'cost']\n>>> data = db.query(\"SELECT * FROM inventory WHERE type = %s\", ('spam',)).fetchall()\n>>> for row in data:\n>>> print (row['type'], row['supplier'], row['cost'])\n('spam', 'spamcorp', 100)\n>>> for row in db[\"inventory\"].find(type='spam'):\n>>> print (row['type'], row['supplier'], row['cost'])\n('spam', 'spamcorp', 100)\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/smnorris/pgdata", "keywords": "postgresql postgis shortcuts data BC ogr2ogr gdal gis", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pgdata", "package_url": "https://pypi.org/project/pgdata/", "platform": "", "project_url": "https://pypi.org/project/pgdata/", "project_urls": { "Homepage": "https://github.com/smnorris/pgdata" }, "release_url": "https://pypi.org/project/pgdata/0.0.12/", "requires_dist": [ "psycopg2-binary", "sqlalchemy", "sqlalchemy-utils", "geoalchemy2", "alembic", "pytest ; extra == 'test'", "coverage ; extra == 'test'", "fiona ; extra == 'test'" ], "requires_python": "", "summary": "Postgresql shortcuts", "version": "0.0.12" }, "last_serial": 4766302, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "7e8bea16067a59c42075f87f3d1efb7a", "sha256": "1bdab6648db8a9f9f542d739926acb6cab43632a33b889541d9c1c88ef8f9662" }, "downloads": -1, "filename": "pgdata-0.0.10-py3-none-any.whl", "has_sig": false, "md5_digest": "7e8bea16067a59c42075f87f3d1efb7a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14353, "upload_time": "2019-01-25T19:18:10", "url": "https://files.pythonhosted.org/packages/83/b5/400e1fa21460f7842d61ff559ff599064d4e8dda14218aa1a395c62c3af2/pgdata-0.0.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f14611103cee437dd1b7ee1416c51dd3", "sha256": "30ef355a20080c9dfbb2474614834cea095ba27af9a0555d05233c43ef78786e" }, "downloads": -1, "filename": "pgdata-0.0.10.tar.gz", "has_sig": false, "md5_digest": "f14611103cee437dd1b7ee1416c51dd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57063, "upload_time": "2019-01-25T19:18:17", "url": "https://files.pythonhosted.org/packages/55/46/1b5b3c840c0c81ef976743ff8282caa5299074680f8fa720a8da4b577122/pgdata-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "7270f8d8fbff459bafeeb20dc113ce00", "sha256": "7d801ba1e3c45138efb33a85708e972afc635459a4f9d2fe606e0d5984a14b0b" }, "downloads": -1, "filename": "pgdata-0.0.11-py3-none-any.whl", "has_sig": false, "md5_digest": "7270f8d8fbff459bafeeb20dc113ce00", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14370, "upload_time": "2019-01-25T21:29:06", "url": "https://files.pythonhosted.org/packages/8b/f8/3b93a2c8f489dc469459ce9ec327e4b31e4a0bb3cea81a851b167b8b4e59/pgdata-0.0.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6de19b46e7032f1429d0ee2bd62bfb91", "sha256": "a2c62e135802851f0265579976f0cd0246917b5ba1a61f4b5fe5bc92962b2c60" }, "downloads": -1, "filename": "pgdata-0.0.11.tar.gz", "has_sig": false, "md5_digest": "6de19b46e7032f1429d0ee2bd62bfb91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57124, "upload_time": "2019-01-25T21:29:12", "url": "https://files.pythonhosted.org/packages/38/23/81a5609bca60de6d52a207f0df899bda53802195bde7fa4c4cb68b3a6d15/pgdata-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "4b9c7750978ba1eacd0beb86a66aba55", "sha256": "f6d2c092a89c4983da36ef8b8eb494bbaf4a27360764dd626989aed3f98ad918" }, "downloads": -1, "filename": "pgdata-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "4b9c7750978ba1eacd0beb86a66aba55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14270, "upload_time": "2019-02-01T01:21:13", "url": "https://files.pythonhosted.org/packages/0a/86/9321964e6a313d7c1c31b60e23ce1c4508235ebb1ec7bbefbc8a5aed7ac3/pgdata-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed1de2cc20a88eeee7ac7a1c6f674687", "sha256": "4698900e07273a0bec05f98c7d5a00220d3f19c43bb2aee6706a284602cc4c50" }, "downloads": -1, "filename": "pgdata-0.0.12.tar.gz", "has_sig": false, "md5_digest": "ed1de2cc20a88eeee7ac7a1c6f674687", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57057, "upload_time": "2019-02-01T01:21:19", "url": "https://files.pythonhosted.org/packages/36/4f/a6996daf8bd185c2856de79d40f0b62df14515b817cf8e380ffab53f4653/pgdata-0.0.12.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "9a0ab35fcdd2aca9df6507dd6f29af1e", "sha256": "74c4331381bfa9b877c88b41364e4e3b986a5343da3d8edf2d7718e04f1ad572" }, "downloads": -1, "filename": "pgdata-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a0ab35fcdd2aca9df6507dd6f29af1e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13500, "upload_time": "2018-01-12T23:18:24", "url": "https://files.pythonhosted.org/packages/08/2f/e7c5c2aa0df01e7a0740cec0f8ed59079c3b8b7f06e62c9aa12e414a8d7a/pgdata-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "490c0549d2a0af244e3f394789d95940", "sha256": "203d186bbaab838bf0d291e78c0a3545cdc8e420c08dda6938dbd8e0f93acc47" }, "downloads": -1, "filename": "pgdata-0.0.5.tar.gz", "has_sig": false, "md5_digest": "490c0549d2a0af244e3f394789d95940", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54657, "upload_time": "2018-01-12T23:18:26", "url": "https://files.pythonhosted.org/packages/f9/22/7771ea48277de25522a04042e000d07d9181d6c73a93641e5479b4243447/pgdata-0.0.5.tar.gz" } ], "0.0.5.dev0": [ { "comment_text": "", "digests": { "md5": "b9544f2beb18d01a16be1c3660383d2c", "sha256": "7ebcce96d349092da6382091afb653240c6db94083778590502a06f0e5cacd26" }, "downloads": -1, "filename": "pgdata-0.0.5.dev0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b9544f2beb18d01a16be1c3660383d2c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13576, "upload_time": "2018-01-12T23:09:20", "url": "https://files.pythonhosted.org/packages/e0/95/05fdbcaae7107776b9ecae8f764ddc8639c051638ac918a7d971ce981ec0/pgdata-0.0.5.dev0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c7a49ef76ddadb8a285ac43984f3e392", "sha256": "932be0e24841836361ef1d5a75ba78658cd3c062e4c3bec7409aae9a9d6f33e7" }, "downloads": -1, "filename": "pgdata-0.0.5.dev0.tar.gz", "has_sig": false, "md5_digest": "c7a49ef76ddadb8a285ac43984f3e392", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54690, "upload_time": "2018-01-12T23:09:22", "url": "https://files.pythonhosted.org/packages/0c/d1/e8431e6619111fb8ce55d030de5beb0d2af8d8e9fda167f7cb0b3244cef6/pgdata-0.0.5.dev0.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "bfdfb453392983b77af09b12be9bda94", "sha256": "0cc97b1a00e98d8fdfe06338549770c25f729eb034a2b81d6edad95b0a8714ea" }, "downloads": -1, "filename": "pgdata-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bfdfb453392983b77af09b12be9bda94", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17120, "upload_time": "2018-01-20T07:02:23", "url": "https://files.pythonhosted.org/packages/e1/63/2dc332288ff916d410f51ae1a2cc57f3b6b73393ddc177824a828c2ec066/pgdata-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b48cbb7b66ef9617889d5bfd7ee7d031", "sha256": "9cdc75f7863b3270339d426f163a9a01a3f04da1daabe35bcc0d565bed981b26" }, "downloads": -1, "filename": "pgdata-0.0.6.tar.gz", "has_sig": false, "md5_digest": "b48cbb7b66ef9617889d5bfd7ee7d031", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56971, "upload_time": "2018-01-20T07:02:25", "url": "https://files.pythonhosted.org/packages/a5/99/22fda8bbf024a00bb022e4d55b018f6a47f13ccbed974eecce9d7e63f287/pgdata-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "0c20c4ac8840a178a1108042b9e5841c", "sha256": "8affad36425439e867bbb4b4547aadbda6613020de059d6a6b7b852168a89034" }, "downloads": -1, "filename": "pgdata-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0c20c4ac8840a178a1108042b9e5841c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17333, "upload_time": "2018-02-16T16:14:14", "url": "https://files.pythonhosted.org/packages/7d/5e/f7e706f3902746587cb84c46480a30bf75523c7abf4422c425336d0255cc/pgdata-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bc714ebd52e66066efa60d8b72f71950", "sha256": "83dc0482ee04230265f790826f3c6f10f99524780cba1bf314dd09b4c7076b7a" }, "downloads": -1, "filename": "pgdata-0.0.7.tar.gz", "has_sig": false, "md5_digest": "bc714ebd52e66066efa60d8b72f71950", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57152, "upload_time": "2018-02-16T16:14:18", "url": "https://files.pythonhosted.org/packages/83/de/8554cf30425db0b9ac2359a2c4727aa8f74de947d53f88764cf1abf1d984/pgdata-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "c3ab64f5f4a64086b8136c6a7167fbc6", "sha256": "50a0ce1bdc7ebcb1df776c8641ea7b930ff0c7b40f5c09c00bbcd4dfcb8a9c90" }, "downloads": -1, "filename": "pgdata-0.0.8-py3-none-any.whl", "has_sig": false, "md5_digest": "c3ab64f5f4a64086b8136c6a7167fbc6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17572, "upload_time": "2018-03-14T23:32:17", "url": "https://files.pythonhosted.org/packages/b8/00/4d5baa3ca76023603b76917007577cac20e4239b8da7414583e117926d68/pgdata-0.0.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad0ea90e88df95de4086a4d60c4a2c18", "sha256": "e21b55a2860bd1569cc9c5e66ff5658fee95d3d9836ca3782abd4ca3e1aa1227" }, "downloads": -1, "filename": "pgdata-0.0.8.tar.gz", "has_sig": false, "md5_digest": "ad0ea90e88df95de4086a4d60c4a2c18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57588, "upload_time": "2018-03-14T23:32:20", "url": "https://files.pythonhosted.org/packages/0c/19/ed1537ca9f957f76867903e5f64580f41334196da72f63b5c40dad67b654/pgdata-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "04da7c5b454fe7cfb1ba49e6fbad8f07", "sha256": "57752a73afa0b70513cdca6c7cfbeda2975283750448e346097e511bb9529715" }, "downloads": -1, "filename": "pgdata-0.0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "04da7c5b454fe7cfb1ba49e6fbad8f07", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17723, "upload_time": "2018-03-15T01:06:24", "url": "https://files.pythonhosted.org/packages/eb/25/43529e6fe2fb39b0c465a72cecb3251bd4e49cc33880e21846a9d8e8fdd8/pgdata-0.0.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8c0cf223c6667c41a1cde1611739db8", "sha256": "a4cea23128a1d24d6ce97052fa7f5e3d69afa6eada5f4d6a05a743c3bdf8a9b0" }, "downloads": -1, "filename": "pgdata-0.0.9.tar.gz", "has_sig": false, "md5_digest": "a8c0cf223c6667c41a1cde1611739db8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57767, "upload_time": "2018-03-15T01:01:50", "url": "https://files.pythonhosted.org/packages/f9/f8/ce2a4608016093afdd76d9f729088f80903e018d226e97deb4f5cecd0f98/pgdata-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b9c7750978ba1eacd0beb86a66aba55", "sha256": "f6d2c092a89c4983da36ef8b8eb494bbaf4a27360764dd626989aed3f98ad918" }, "downloads": -1, "filename": "pgdata-0.0.12-py3-none-any.whl", "has_sig": false, "md5_digest": "4b9c7750978ba1eacd0beb86a66aba55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14270, "upload_time": "2019-02-01T01:21:13", "url": "https://files.pythonhosted.org/packages/0a/86/9321964e6a313d7c1c31b60e23ce1c4508235ebb1ec7bbefbc8a5aed7ac3/pgdata-0.0.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ed1de2cc20a88eeee7ac7a1c6f674687", "sha256": "4698900e07273a0bec05f98c7d5a00220d3f19c43bb2aee6706a284602cc4c50" }, "downloads": -1, "filename": "pgdata-0.0.12.tar.gz", "has_sig": false, "md5_digest": "ed1de2cc20a88eeee7ac7a1c6f674687", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57057, "upload_time": "2019-02-01T01:21:19", "url": "https://files.pythonhosted.org/packages/36/4f/a6996daf8bd185c2856de79d40f0b62df14515b817cf8e380ffab53f4653/pgdata-0.0.12.tar.gz" } ] }