問題タブ [plpython]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - PostgreSQL に挿入された行はトリガー関数では使用できません
- データベース: postgresql
- 言語 : plpythonu
- トピック: トリガー機能
挿入するたびに何かをする必要がありますが、挿入されたレコードは、内部で作成したクエリには表示されませんrequest_received_function()
。挿入されたレコードはトリガー関数内でロックされていますか?
- トリガーはうまく起動し、デバッグできます
- 2番目の挿入レコードはショー自体です
python - Python で一致するペアを「接続されたコンポーネント」に集約する方法
現実の問題:
私は多くの企業の取締役に関するデータを持っていますが、「XYZ の取締役であるジョン・スミス」と「ABC の取締役であるジョン・スミス」が同一人物である場合もあれば、そうでない場合もあります。また、「John J. Smith, director of XYZ」と「John Smith, director of ABC」は同一人物である場合もあれば、同一でない場合もあります。多くの場合、追加情報の調査 (たとえば、「XYZ のディレクター、ジョン・スミス」と「ABC のディレクター、ジョン・スミス」に関する伝記データの比較) により、2 つの観測が同一人物であるかどうかを解決できます。
問題の概念的なバージョン:
その精神で、一致するペアを特定するデータを収集しています。たとえば、次の一致するペアがあるとします: {(a, b), (b, c), (c, d), (d, e), (f, g)}
. 「同一人物」という関係の推移性を利用して、 の「連結成分」を生成したい{{a, b, c, d, e}, {f, g}}
。それは{a, b, c, d, e}
一人であり、{f, g}
別の人です。(質問の以前のバージョンでは、明らかに別のものである「クリーク」に言及していました。これは、(私の目的では)「間違った」結果を与えていた理由を説明します) find_cliques
。networkx
次の Python コードがその役割を果たします。しかし、私は疑問に思います: より良い (計算コストの少ない) アプローチ (例えば、標準または利用可能なライブラリを使用する) はありますか?
関連すると思われる例があちこちにありますが (例: Cliques in python )、これらは不完全であるため、それらが参照しているライブラリや、それらを使用するためのデータのセットアップ方法がわかりません。
サンプル Python 2 コード:
これにより、目的の出力が生成されます: [Set(['a', 'c', 'b', 'e', 'd']), Set(['g', 'f'])]
.
サンプル Python 3 コード:
これにより生成されます[set(['a', 'c', 'b', 'e', 'd']), set(['g', 'f'])]
):
arrays - plpython関数はパラメータとして複数の行を取ることができますか?
複数行の配列を取り、結果の配列を返す関数を作成するには、それを知る必要があります。
例えば:
テーブル some_table
次に実行します:
そして、要素ごとの操作で配列を取得します (この例では avg):
行を操作する標準の集計関数のようなもの。
ドキュメントとグーグルを見てほぼ2時間後、これに対する明確な答えが見つかりません。
配列をテーブルに展開できることは知っていますが、それを避けようとしています。この種の関数が標準 SQL で解決できれば、それも有用です。
python - PostgreSQL実行クエリの複数の結果を追加する方法は?
getitems(id)
この ID に関連するすべての行を提供する関数があります。
getitems
PostgreSQL に func1 という名前の関数があり、アイテムのリスト全体を返す必要があります。
現在、最後の反復の値を含む x を返します ( のgetitems
最後の id の結果listof_id
)。各反復を最後に追加するように変更するにはどうすればよいですか?
私はやろうとしました:
そしてそれはうまくいきません...
python - plpython 関数間の引数として int[] を渡す方法
私は PostgreSQL と plpython 関数を使用しています。
私は機能を持っていますfunc1
:
func1
func2
である c 引数で呼び出しますinteger[]
。
SQLクエリから実行する場合
次のエラーが表示されます。
を渡すと何かが機能しintger[]
ません。私も試しました:
それもうまくいきません。
sql - PL/Python:空のセットを返す方法は?
で動作する関数がありますint[]
。配列が空かどうかを確認し、その場合は何もすることがないので停止する機能が必要です。
これは私の機能です:
次のように定義された func_type:
チェックを追加したとき:
エラーが発生しました:
返さなければならないことは理解していますが、ビルドされていなかったのでビルドされませんでしたが、この時点で戻すにはどうすればよいですかfunc_type
? また、 と呼ばれると仮定します。返される行が 0 行であることをどのように確認できますか?func_type
plpy.execute
func3
func2
func3
postgresql - PL/Python で PostgreSQL 関数の単体テストを作成する - 可能/合理的ですか?
pgTAPと呼ばれる PL/PGSQL プロシージャの単体テスト用の興味深い PL/PGSQL フレームワークを見つけました。しかし、PostgreSQL はストアド プロシージャ用の別の言語をサポートしています。Python は、標準ライブラリと assert ステートメントに既に単体テスト フレームワークを備えています。PL/Python で PGSQL プロシージャの単体テストを作成するとどうなりますか?
出来ますか?それは良い考えですか?