streampq

Stream results of multi-statement PostgreSQL queries from Python without server-side cursors. Has benefits over some other Python PostgreSQL libraries:
-
Streams results from complex multi-statement queries even though SQL doesn't allow server-side cursors for such queries - suitable for large amounts of results that don't fit in memory.
-
CTRL+C (SIGINT) by default behaves as expected even during slow queries - a
KeyboardInterruptis raised and quickly bubbles up through streampq code. Unless client code prevents it, the program will exit. -
Every effort is made to cancel queries on
KeyboardInterrupt,SystemExit, or errors - the server doesn't continue needlessly using resources.
Installation
pip install streampq
The libpq binary library is also required. This is typically either already installed, or installed by:
- macOS + brew:
brew install libpq - Linux (Debian):
apt install libpq5 - Linux (Red Hat):
yum install postgresql-libs
Usage
from streampq import streampq_connect
# libpq connection paramters
# https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS
#
# Any can be ommitted and environment variables will be used instead
# https://www.postgresql.org/docs/current/libpq-envars.html
connection_params = (
('host', 'localhost'),
('port', '5432'),
('dbname', 'postgres'),
('user', 'postgres'),
('password', 'password'),
)
# SQL statement(s) - if more than one, separate by ;
sql = '''
SELECT * FROM my_table WHERE my_col = {first};
SELECT * FROM my_other_table WHERE my_other_col = {second};
'''
with streampq_connect(connection_params) as query:
for (columns, rows) in query(sql, literals=(
('first', 'a value'),
('second', 'another value'),
)):
for row in rows:
pass
Exceptions
Exceptions derive from streampq.StreamPQError. If there is any more information available on the error, it's added as a string in its args property. This is included in the string representation of the exception by default.
Exception hierarchy
-
StreamPQError
Base class for all explicitly-thrown exceptions
-
ConnectionError
An error occurred while attempting to connect to the database.
-
QueryError
An error occurred while attempting to run a query. Typically this is due to a syntax error or a missing column.
-
CancelError
An error occurred while attempting to cancel a query.
-
CommunicationError
An error occurred communicating with the database after successful connection.
-
Release files for streampq 0.0.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| streampq-0.0.11.tar.gz | 6.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| streampq-0.0.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.3 kB
Release files / streampq-0.0.11.tar.gz
| Download URL | streampq-0.0.11.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9b46d4e02654bc7ef8663ed8586aeb0bc6b8546f46f24447701fb2be263c57b
|
|
BLAKE2b-256 checksum How to use checksums |
f19f367ebb3ccf781ea82228fb6ded7f6886dc8154cc721b5686a30f0b07316f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.8.11
|
Release files / streampq-0.0.11-py3-none-any.whl
| Download URL | streampq-0.0.11-py3-none-any.whl |
|---|---|
| Size | 6.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
da14d4066e27271c5b5401ef9f7904f8232237a2c2ecdf91b1ae2c6e7faab319
|
|
BLAKE2b-256 checksum How to use checksums |
96422ab625a276a9311754ec27bd9a085c920d4b20e93a1977217a4ae056323c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.0 CPython/3.8.11
|