Re: How to get a signal from the database when a INSERT INTO is done?

Поиск
Список
Период
Сортировка
От Daniele Varrazzo
Тема Re: How to get a signal from the database when a INSERT INTO is done?
Дата
Msg-id CA+mi_8ZiEZVk7VswHyJBg40vGF5TEOgPH8xZ1P=UF4JNnn+=FA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: How to get a signal from the database when a INSERT INTO is done?  (Marti Raudsepp <marti@juffo.org>)
Ответы Re: How to get a signal from the database when a INSERT INTO is done?  (Marti Raudsepp <marti@juffo.org>)
Список pgsql-general
On Tue, Feb 28, 2012 at 2:15 PM, Marti Raudsepp <marti@juffo.org> wrote:
> On Tue, Feb 28, 2012 at 13:07, Andre Lopes <lopes80andre@gmail.com> wrote:
>> This is a mixed question Python/PostgreSQL... I need to get a signal
>> in my python application when a new insert is done. How can this be
>> done, any clues?
>
> As depesz mentioned, you can use the LISTEN and NOTIFY commands for
> this asynchronous signalling. You can add an after-insert trigger to
> send the NOTIFY.
>
> On the Python end, you have to call psycopg2 connection.poll() method
> periodically or in response to select() activation, and check the
> connection.notifies list. Note that this list can grow even when you
> run other queries -- not just on poll.
>
> There's an example here:
> http://initd.org/psycopg/docs/advanced.html#async-notify

Using an asynchronous IO-driven framework such as eventlet or gevent
you don't even need to poll the connection to look for events: you
just get notified as soon as there is something to read. Here is an
example:

http://initd.org/psycopg/articles/2010/12/01/postgresql-notifications-psycopg2-eventlet/

It's enough to have a NOTIFY executed in a trigger on insert, maybe
putting the id in the notify payload, and you get timely notifications
about inserts in Python world.

You may be able to do something similar in Twisted using txPostgres:
when I asked Jan about that, IIRC he said they weren't ready yet, but
it was several months ago, it may have changed since then.

-- Daniele

В списке pgsql-general по дате отправления:

Предыдущее
От: Rainer Pruy
Дата:
Сообщение: Re: Problem with initdb and two versions on one server?
Следующее
От: Marti Raudsepp
Дата:
Сообщение: Re: How to get a signal from the database when a INSERT INTO is done?