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.4.tar.gz
(52.0 kB
view details)
Built Distribution
postgis-1.0.4-py3-none-any.whl
(63.7 kB
view details)
File details
Details for the file postgis-1.0.4.tar.gz
.
File metadata
- Download URL: postgis-1.0.4.tar.gz
- Upload date:
- Size: 52.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d41f087e249a2a8b6720931e6f8f22b7747801f250265a8b8ac5f9d48221e63 |
|
MD5 | 65032305681b451f3d1a41f143a6f66c |
|
BLAKE2b-256 | 93096edfb7bda8b6645de68c232709aaf11ac2a945ced37ebb69e513d9dc01e5 |
File details
Details for the file postgis-1.0.4-py3-none-any.whl
.
File metadata
- Download URL: postgis-1.0.4-py3-none-any.whl
- Upload date:
- Size: 63.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1dfa62d33c585d68a54bdd47c21bdcb9302f9cbb0ef5aec360e64d2c3e0e1a93 |
|
MD5 | 9dc9853d186ec83ebd975b641d058ac4 |
|
BLAKE2b-256 | fee1522b5e0f9c0edf8bf864ce80a060d7c3a87d88070bfb2640a70eb0b006b0 |