Pyscopg and asyncpg helpers to work with PostGIS.
Project description
[![Circle CI](https://img.shields.io/circleci/project/yohanboniface/psycopg-postgis.svg)](https://circleci.com/gh/yohanboniface/psycopg-postgis) [![PyPI](https://img.shields.io/pypi/v/psycopg-postgis.svg)](https://pypi-hypernode.com/pypi/psycopg-postgis) [![PyPI](https://img.shields.io/pypi/pyversions/psycopg-postgis.svg)](https://pypi-hypernode.com/pypi/psycopg-postgis) [![PyPI](https://img.shields.io/pypi/implementation/psycopg-postgis.svg)](https://pypi-hypernode.com/pypi/psycopg-postgis) [![PyPI](https://img.shields.io/pypi/status/psycopg-postgis.svg)](https://pypi-hypernode.com/pypi/psycopg-postgis)
# python-postgis
PostGIS helpers for psycopg2 and asyncpg.
## Install
pip install postgis
If you want a compiled version, first install `cython`:
pip install cython
pip install postgis
## Usage
You need to register the extension:
# With psycopg2
> from postgis.psycopg import register
> register(connection)
# With asyncpg
> from postgis.asyncpg import register
> await register(connection)
Then you can pass python geometries instance to psycopg:
> cursor.execute('INSERT INTO table (geom) VALUES (%s)', [Point(x=1, y=2, srid=4326)])
And retrieve data as python geometries instances:
> cursor.execute('SELECT geom FROM points LIMIT 1')
> geom = cursor.fetchone()[0]
> geom
<Point POINT(1.0 2.0)>
## Example with psycopg2
> import psycopg2
> from postgis import LineString
> from postgis.psycopg import register
> db = psycopg2.connect(dbname="test")
> register(db)
> cursor.execute('CREATE TABLE IF NOT EXISTS mytable ("geom" geometry(LineString) NOT NULL)')
> cursor.execute('INSERT INTO mytable (geom) VALUES (%s)', [LineString([(1, 2), (3, 4)], srid=4326)])
> cursor.execute('SELECT geom FROM mytable LIMIT 1')
> geom = cursor.fetchone()[0]
> geom
<LineString LINESTRING(1.0 2.0, 3.0 4.0)>
> geom[0]
<Point POINT(1.0 2.0)>
> geom.coords
((1.0, 2.0), (3.0, 4.0))
> geom.geojson
{'coordinates': ((1.0, 2.0), (3.0, 4.0)), 'type': 'LineString'}
> str(geom.geojson)
'{"type": "LineString", "coordinates": [[1, 2], [3, 4]]}'
## Example with asyncpg
from postgis.asyncpg import register
pool = await create_pool(**DB_CONFIG, loop=loop, max_size=100,
init=register)
# python-postgis
PostGIS helpers for psycopg2 and asyncpg.
## Install
pip install postgis
If you want a compiled version, first install `cython`:
pip install cython
pip install postgis
## Usage
You need to register the extension:
# With psycopg2
> from postgis.psycopg import register
> register(connection)
# With asyncpg
> from postgis.asyncpg import register
> await register(connection)
Then you can pass python geometries instance to psycopg:
> cursor.execute('INSERT INTO table (geom) VALUES (%s)', [Point(x=1, y=2, srid=4326)])
And retrieve data as python geometries instances:
> cursor.execute('SELECT geom FROM points LIMIT 1')
> geom = cursor.fetchone()[0]
> geom
<Point POINT(1.0 2.0)>
## Example with psycopg2
> import psycopg2
> from postgis import LineString
> from postgis.psycopg import register
> db = psycopg2.connect(dbname="test")
> register(db)
> cursor.execute('CREATE TABLE IF NOT EXISTS mytable ("geom" geometry(LineString) NOT NULL)')
> cursor.execute('INSERT INTO mytable (geom) VALUES (%s)', [LineString([(1, 2), (3, 4)], srid=4326)])
> cursor.execute('SELECT geom FROM mytable LIMIT 1')
> geom = cursor.fetchone()[0]
> geom
<LineString LINESTRING(1.0 2.0, 3.0 4.0)>
> geom[0]
<Point POINT(1.0 2.0)>
> geom.coords
((1.0, 2.0), (3.0, 4.0))
> geom.geojson
{'coordinates': ((1.0, 2.0), (3.0, 4.0)), 'type': 'LineString'}
> str(geom.geojson)
'{"type": "LineString", "coordinates": [[1, 2], [3, 4]]}'
## Example with asyncpg
from postgis.asyncpg import register
pool = await create_pool(**DB_CONFIG, loop=loop, max_size=100,
init=register)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
postgis-1.0.1.tar.gz
(7.9 kB
view details)
Built Distribution
postgis-1.0.1-py3-none-any.whl
(19.2 kB
view details)
File details
Details for the file postgis-1.0.1.tar.gz
.
File metadata
- Download URL: postgis-1.0.1.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9fd14724a390b47b64065f5a490f40b0519e6ffea8293eff332e4d313a3bf070 |
|
MD5 | d1c73d30100180e65a4440a40f3749d1 |
|
BLAKE2b-256 | 4966bfe7f2042d523f93063734f6a0837cb02da1f0644bf42334ed0bf94bfd87 |
File details
Details for the file postgis-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: postgis-1.0.1-py3-none-any.whl
- Upload date:
- Size: 19.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 285eecab777fc65a954925f380bb46a74fd0d4aeb67810a71dfb7c34ae80b899 |
|
MD5 | a3f14fead2109f01972f97ee872c33f6 |
|
BLAKE2b-256 | 6fc02fbfe9330282eb02ce93671b1554563eb7ecddb3a9858f9dfd9f4cbaa642 |