PostgreSQLのチャンネル名は何ですか?そして、どこ私はテーブルの変更を監視するためにそれを見つけることができますか?

Gatt88:

私のpythonを使用してPostgreSQLの特定のテーブルの変更に関する自動通知を受信する必要があります。私は、チャンネル名が何であるかを知らない、とどこのはpgAdminでそれを見つけることができます。

私は「のtable_1」と呼ばれるテーブルを聞く必要があると変更についての通知を受け取ると仮定。私がしなければならないこと?

ここで私がオンライン見つけたコードです。..

import select
import psycopg2
import psycopg2.extensions

DB_NAME = "postgres"
DB_USER = "postgres"
DB_PASS = "pw"
DB_HOST = "localhost"
DB_PORT = "5432"

conn = psycopg2.connect(database=DB_NAME, user=DB_USER, password=DB_PASS, host=DB_HOST, port=DB_PORT)
conn.set_isolation_level(psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)

curs = conn.cursor()
curs.execute("LISTEN test;")

print "Waiting for notifications on channel 'test'"
while True:
    if select.select([conn],[],[],5) == ([],[],[]):
        print "Timeout"
    else:
        conn.poll()
        while conn.notifies:
            notify = conn.notifies.pop(0)
            print "Got NOTIFY:", notify.pid, notify.channel, notify.payload
Zznes:

チャンネルは、作品をNOTIFY / LISTENを参照する方法の一部であるドキュメントその機能のために。

あなたはそれが変更されるたびに通知を出すのtable_1にトリガを作成する必要があります。あなたがしたい場合は、これらの通知が「のtable_1」に送信されたチャネルに名前を付けることができます。それとも、あなたが聞いているすべてのテーブルのための一つの共通のチャネルを使用することができます。それはあなた次第です。

代わりに、論理的なレプリケーションを使用する場合があります。場合は、同じようなことを行うための別の方法です。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=384432&siteId=1