Skip to main content

A Python API client for interacting with PostgREST applications.

Project description

Pypgrest

A Python client for interacting with PostgREST APIs.

Installation

$ pip install pypgrest

Quick start

>>> from pypgrest import Postgrest

>>> client = Postgrest("https://api.tacos.com", token="secretsalsa")

# See postgrest docs for supported query params
>>> params = {
        "select" : "name,tortilla,cost",
        "tortilla" : "is.corn",
        "limit" : 100,
        "order": "name"
    }

# Supported methods are select, insert, update, upsert, and delete
>>> client.select(resource="menu", params=params, pagination=True, headers=None)
# [{ "name" : "al pastor", "tortilla" : "corn", "cost" : "2.01" }, ... ]

>>> payload = [{ "id" : 23, "cost" : "2.25" }, { "id" : 26, "cost" : "1.25" }]

>>> pgrest.upsert(payload)
# [{ "id" : 23, "cost" : "2.25", "name" : "al pastor", ... }, ... ]

# You can inspect the response object at `self.res`:
>>> client.res.status_code
# 201

Headers

The client is initialized with Content-Type=application/json and (if you supply a token) Authorization headers. You can supply additional headers on construction, or per request.

>>> client = Postgrest(
    "https://api.tacos.com",
    token="secretsalsa", 
    headers={"Prefer": "return=representation"}
)

>>> client.headers
# {"Content-Type": 'application/json', 'Authorization': 'Bearer secretsalsa', 'Prefer': 'return=representation'}

>>> client.insert(
    resource="menu",
    data={"id": 5, "name": "barbacoa"},
    headers={"Prefer": "return=headers-only"}
)

Limits and pagination

By default, the client will paginate requests until all records have been retrieved. You can supply a limit param to limit the number of results returned by select.

You can disable pagination with pagination=False, in which case the record limit will be capped by your API's max-rows setting.

Development

We use Github Actions to publish to PyPI. The workflows are defined in .github/workflows.

Any commit/merge to the dev branch will trigger a PyPI publication to the knackpy-dev package. Any release on the master branch will trigger publication to the knackpy package on PyPI. Note that PyPI publications will fail if don’t bump the version number in setup.py.

License

As a work of the City of Austin, this project is in the public domain within the United States.

Additionally, we waive copyright and related rights of the work worldwide through the CC0 1.0 Universal public domain dedication.

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

pypgrest-0.2.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

pypgrest-0.2.0-py3-none-any.whl (4.4 kB view details)

Uploaded Python 3

File details

Details for the file pypgrest-0.2.0.tar.gz.

File metadata

  • Download URL: pypgrest-0.2.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pypgrest-0.2.0.tar.gz
Algorithm Hash digest
SHA256 017c6a50d49e20f81c24f59068d732961efc24673b5d43644137f00d28111249
MD5 e22d02e09417a8fe2df6dcc8c8b17b50
BLAKE2b-256 1c172bdab61e8125457469b7fb79634b0b4f11cbd657f85ec2c0611d55d59f27

See more details on using hashes here.

File details

Details for the file pypgrest-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pypgrest-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 4.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for pypgrest-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81428b76e486755aa7ec6da7b6a55095fce8a8dab387e2bfee10a06f2d096ace
MD5 e74ef3fd8bc2c4b5ddb910795ad74bd1
BLAKE2b-256 42eea7fb79a3f2c22e67b7e2ec39e551386fa0e8bdfe006529edb9208c114321

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