Skip to main content

PostgreSQL for Gevent kept Simple

Project description

Provides:

  • db(sql, *values).row/rows/affected

  • id = db_insert(table_name, _return='id', name=value,..)

  • affected = db_update(table_name, where=dict(name=value, item_in=tuple_of_values), name=value,..)

  • result = db_transaction(code)

  • raise db_rollback

  • db("""ALTER TYPE "my_type" ADD VALUE 'my_value'""", autocommit=True) # Avoid "cannot run inside a transaction block".

  • db('SELECT * FROM "table" WHERE "name" LIKE %s', escape_like(fragment))

  • connection pool blocks only for the first connection - for quick deploy

  • auto reconnect and retry

  • optional log of each query

Usage:

sudo apt-get install --yes gcc libevent-dev libpq-dev python-dev
sudo pip install pg4geks

from pg4geks import db, db_config, db_insert, db_update, db_transaction
db_config(name='test', user='user', password='password')
# Defaults: host='127.0.0.1', port=5432, pool_size=10, patch_psycopg2_with_gevent=True, log=None

row = db('SELECT "column" FROM "table" WHERE "id" = %s', id).row
assert row is None or row.column == row['column']

return db('SELECT * FROM "table" WHERE "related_id" IN %s AND "parent_id" = %s', tuple(related_ids), parent_id).rows
# Please note that "tuple()" should be used with "IN %s", to keep "list []" for PostgreSQL Array operations.
# http://pythonhosted.org/psycopg2/usage.html#adaptation-of-python-values-to-sql-types

return [
    processed(row)
    for row in db('SELECT * FROM "table" LIMIT 10')
]  # Please note that no ").rows" is required for iteration.

try:
    def code():
        db('INSERT INTO "table1" ("quantity") VALUES (%s)', -100)
        db('INSERT INTO "table2" ("quantity") VALUES (%s)', +1/0)

        if error:
            raise db_rollback

        return result
    result = db_transaction(code)

except db_rollback:
    pass  # Or not.

id = db_insert('table',
    related_id=related_id,
    parent_id=parent_id,
    _return='id',
)

assert db_update('table',
    related_id=None,
    where=dict(id=id),  # Or: id=tuple(ids_to_update)
) == 1

# See tests for more usage examples.

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

pg4geks-0.2.3.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file pg4geks-0.2.3.tar.gz.

File metadata

  • Download URL: pg4geks-0.2.3.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pg4geks-0.2.3.tar.gz
Algorithm Hash digest
SHA256 2a01e47aa43f528d2edae6e2e11a2db2ce7d89604d8adb66a22787674e2961cc
MD5 b79064e37961eb26b8b6b3a1aafe6b31
BLAKE2b-256 2ea35cb43d79eeeb0714c7692cb1ca54fa21a60a8e69b2176641d476720e1e64

See more details on using hashes here.

Supported by

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