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」に送信されたチャネルに名前を付けることができます。それとも、あなたが聞いているすべてのテーブルのための一つの共通のチャネルを使用することができます。それはあなた次第です。
代わりに、論理的なレプリケーションを使用する場合があります。場合は、同じようなことを行うための別の方法です。