2016-04-05 31 views

答えて

0

Postgressは、作成/更新トリガーから呼び出すことができるPython stored proceduresをサポートしているようです。

PAHOのPythonクライアントと組み合わせるこれは、あなたが、私は言語plpythonuというのCREATE入力すると

+0

多分そうですか? 戻る公開 #client = mqtt.Client() #1 client.connect( "ローカルホスト" としてMQTT インポートpaho.mqtt.publishとして$$ インポートpaho.mqtt.client AS 整数)(関数publishChangesをCREATE 1883年、60) publish.single( "テスト/データ" SELECT *テーブルから、ホスト名= "127.0.0.1") #1 client.loop_forever() $$言語plpythonuという。 –

1

は、[OK]を、このアイデアは、私は、PostgreSQL 9.5を使用して、コンソールにしています面白いです何をしたいだろう。 Python言語が利用可能です。 しかし、私はどのようにデータベース全体と私のブローカにデータベースの定期的な変更を受け取ることができます。

CREATE FUNCTION publishChanges() 
    RETURNS integer 
AS $$ 
    import paho.mqtt.client as mqtt 
    import paho.mqtt.publish as publish 
    #client = mqtt.Client() 
    #client.connect("localhost", 1883, 60) 

    publish.single("test/data", SELECT * from table ,hostname="127.0.0.1") 

    #client.loop_forever() 
$$ LANGUAGE plpythonu; 
+0

このようなクエリを公開することはできません。テーブル全体ではなく、変更されたレコードのみをパブリッシュする必要があります。しかし、コンセプトはおおよそ私が提案したものです – hardillb

+0

関数の戻り値は何ですか?また、トリガステートメントはどのように実装できますか? –

0

Postgressには独自のパブリッシュ/サブスクライブシステムがあります。listen/notify。パブリッシュする情報のために、適切な(聴取)通知チャネルをポストバックで設定します。通知ペイロードは、mqttメッセージ文字列としてフォーマットできます。それらをリッスンしてmqtt-brokerにパブリッシュするクライアントを作成します。

関連する問題