Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shawalli/psycopg2-pgevents
PostGreSQL LISTEN/NOTIFY functionality, via psycopg2.
https://github.com/shawalli/psycopg2-pgevents
Last synced: 5 days ago
JSON representation
PostGreSQL LISTEN/NOTIFY functionality, via psycopg2.
- Host: GitHub
- URL: https://github.com/shawalli/psycopg2-pgevents
- Owner: shawalli
- License: mit
- Created: 2018-08-20T01:45:49.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-08-10T16:55:37.000Z (about 3 years ago)
- Last Synced: 2024-10-26T00:10:22.002Z (13 days ago)
- Language: Python
- Size: 58.6 KB
- Stars: 12
- Watchers: 1
- Forks: 4
- Open Issues: 4
-
Metadata Files:
- Readme: README.rst
- License: LICENSE.txt
Awesome Lists containing this project
README
#################
psycopg2-pgevents
#################.. image:: https://badge.fury.io/py/psycopg2-pgevents.svg
:target: https://badge.fury.io/py/psycopg2-pgevents
.. image:: https://coveralls.io/repos/github/shawalli/psycopg2-pgevents/badge.svg?branch=master
:target: https://coveralls.io/github/shawalli/psycopg2-pgevents?branch=master
.. image:: https://img.shields.io/badge/License-MIT-yellow.svg
:target: https://opensource.org/licenses/MITThis package makes it simple to use PostGreSQL's NOTIFY/LISTEN eventing system
from Python in a consistent, pleasing manner.Note that this project officially supports Python 3.6+. This is primarily due
to static typing.*******
Example
*******The following shows an example of the package in action.
Assumptions
------------ PostGreSQL server is running locally.
- default database (``postgres``) is available.
- table exists in database in the public schema with the name ``orders``... code-block:: python
from psycopg2 import connect
from psycopg2_pgevents.trigger import install_trigger, \
install_trigger_function, uninstall_trigger, uninstall_trigger_function
from psycopg2_pgevents.event import poll, register_event_channel, \
unregister_event_channelconnection = connect(dsn='postgres:///postgres')
connection.autocommit = Trueinstall_trigger_function(connection)
install_trigger(connection, 'orders')
register_event_channel(connection)try:
print('Listening for events...')
while True:
for evt in poll(connection):
print('New Event: {}'.format(evt))
except KeyboardInterrupt:
print('User exit via Ctrl-C; Shutting down...')
unregister_event_channel(connection)
uninstall_trigger(connection, 'orders')
uninstall_trigger_function(connection)
print('Shutdown complete.')***************
Troubleshooting
**************** The connection's ``autocommit`` property must be enabled for this package to
operate correctly. This requirement is provided by PostGreSQL's NOTIFY/LISTEN
mechanism.* The same connection that is used with ``register_event_channel()`` must be
used with ``poll()`` in order to receive events. This is due to the nature of
how PostGreSQL manages "listening" connections.* If the table that you'd like to listen to is not in the public schema, the
schema name must be given as a keyword argument in the ``install_trigger()``
method.**********************
Authorship and License
**********************Written by Shawn Wallis and distributed under the MIT license.