Skip to main content

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)

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)

Uploaded Source

Built Distribution

postgis-1.0.1-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

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

Hashes for postgis-1.0.1.tar.gz
Algorithm Hash digest
SHA256 9fd14724a390b47b64065f5a490f40b0519e6ffea8293eff332e4d313a3bf070
MD5 d1c73d30100180e65a4440a40f3749d1
BLAKE2b-256 4966bfe7f2042d523f93063734f6a0837cb02da1f0644bf42334ed0bf94bfd87

See more details on using hashes here.

File details

Details for the file postgis-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for postgis-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 285eecab777fc65a954925f380bb46a74fd0d4aeb67810a71dfb7c34ae80b899
MD5 a3f14fead2109f01972f97ee872c33f6
BLAKE2b-256 6fc02fbfe9330282eb02ce93671b1554563eb7ecddb3a9858f9dfd9f4cbaa642

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page