問題タブ [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.
python - PL/Python エラー「SPI エラーを Python 例外に変換できませんでした」
PL/Python ストアド プロシージャのセットに取り組んでいます。私は PostgreSQL 9.3 ( apt.postgresql.org からインストール) と Python 2.7 インタープリターを使用しています。Ubuntu 13.04 で実行されています。
このエラーは、大規模な操作の途中で発生します (300,000 行を超えるソース テーブルのデータを使用するマテリアライズド ビューを作成し、PL/Python ストアド プロシージャを使用していくつかのフィールドを計算します)。
私が得るエラー出力は次のとおりです。
(「get_first_level_parent」はストアド プロシージャの 1 つの名前です)。
PostgreSQL サーバーのログは、それ以上の情報を提供しません (私は PostgreSQL と PL/Python の内部に精通していません)。詳細なエラー ログを使用して実行すると、次のようになります。
PostgreSQL エラー コードのドキュメントによると、これXX000
は のエラー コードですinternal_error
。ストアド プロシージャへの呼び出しを分離し、独自のステートメントで実行するとSELECT get_first_level_parent(373673007)
、エラーは発生しません。
私の質問は、この種のエラーをデバッグするために使用できるツール/テクニックは何ですか? 私の現在の問題については、ストアドプロシージャを書き直すことで問題を「解決」する可能性があります(ゆっくりと、一度に1つの小さな部分をテストします)。それが唯一の方法ですか?
sql - PL/Python エラー: NameError: グローバル名 'ユーザー定義関数の名前' が定義されていません
Postgres 9.3 を実行しており、ユーザー定義の SQL 関数を呼び出す PL/Python 関数を作成しようとしていますが、次の関数を使用して呼び出した後、次のエラー メッセージが表示されますSELECT * FROM f2(TEXT1, TEXT2)
。
SQL 関数は次のようになります。
PL/Python 関数は次のようになります。
だから、私はそれを自分で呼び出すことができますが、f2内にf1が見つからないようです。
これに関する指針をいただければ幸いです。ありがとう
postgresql - クエリ結果をplpython関数のリスト変数に格納する
私はpostgresqlと関数の作成に非常に慣れていないので、ご容赦ください。Python スクリプトを postgresql 関数に変換する必要があり、そのために PL/Python を使用するつもりです。しかし、私はそうすることでいくつかの問題を抱えています。関数を実行すると、次のエラーが表示されます。
エラー: TypeError: サポートされていないオペランド型 +: 'int' および 'dict' SQL 状態: XX000 コンテキスト: トレースバック (最新の呼び出しが最後): PL/Python 関数 "ellipse"、5 行目、平均 X=float( sum(Xarray))/len(Xarray) if len(Xarray) > 0 else float('nan') PL/Python 関数 "ellipse"
私の知る限り、クエリは結果を辞書に保存し、このエラーが発生します(スクリプトでリストを操作しようとしているため)。少なくとも、これが問題になる可能性があると思います。私の質問は、クエリ結果をリスト変数に格納する方法はありますか?
postgresql - Windows への plpythonu のインストール
Windows マシンの postgres サーバーに plpython をインストールしようとしています。postgres でコマンドを発行するCREATE EXTENSION plpython3u;
と、ソースを見つけようとしている次のエラーが表示されます。
このファイルは存在します。これは、Windows が依存するファイルの 1 つを見つけることができないことを意味していると思います。Dependency Walkerでplpython3.dll を開くと、GPSVC.dll が見つからないと表示されます。
この不足している dll が原因でCREATE EXTENSION
コマンドが失敗する可能性はありますか? C:\Windows\System32 で同じ名前の .dll を見つけ、それを C:\Windows\SysWOW64 にコピーしましたが、これで問題は解決しませんでした。異なる CPU タイプのモジュールを持つことに関するエラー。
postgresql - Windows 64 ビットの Postgresql 9.3 64 ビットまたは 32 ビットに PLPython を正常にインストールするためのレシピはありますか?
ファイルが正しい場所にある場合でも、実行CREATE EXTENSION plpython3u
するとエラーが発生しました。The specified module could not be found
ウェブですべてを読んだ後、提案されているように別の python バージョン (3.2) をダウンロードして、dll
.
マジック ブロックが見つからないというエラーが表示されます: マジック ブロックがありません ヒント: PG_MODULE_MAGIC マクロを使用するには、拡張ライブラリが必要です。
Postgresql の 32 ビット バージョンと 64 ビット バージョンで同じプロセスを試しましたが、どちらも説明どおりに失敗しました。
その PLPython を Windows 64 ビット OS にインストールするソリューションはありますか?
postgresql - plpython、plpythonu、plpython2uの違いは何ですか
plpython、plpythonu、plpython2uの違いは何ですか。
u と 2u とはどういう意味ですか?
周りを見渡しても、その件に関する情報は見つかりませんでした。
python - PL/Python 関数間で純粋な Python 関数を再利用する
2 つ以上の PL/Python 関数間でいくつかの単純で純粋な Python 関数を宣言して共有したいと考えています。Postgres 9.3 を使用しています。
たとえば、私は持っています:
is_float
関数を他の PL/Python 関数で使用したいと考えています。呼び出し可能な PL/Python 関数として作成できることは理解していますが、純粋な Python のカスタム ユーティリティ関数を直接呼び出すよりも (PL/Python への SQL ベースの呼び出しを実行するために) はるかに扱いにくいことがわかります。
PostgresでPL/Pythonの再利用可能な純粋なPython関数を作成して公開することは可能ですか?