2

友達:

pl / pythonでクエリにパラメータ化しようとしてきましたが、ここでは確かに単純なものが欠けています。変数名の前に%と$を付けてみましたが、うまくいきませんでした。

(結果変数をPythonログに渡すこともできませんでしたが、これは差分の問題です!ログを設定していますが、リテラル文字列を送信できますが、ここではわかりやすくするために多くのコードを切り取っています)

CREATE OR REPLACE FUNCTION footest0 (param_key integer) RETURNS text AS $$

# 1) SELECT from record based on parameter param_key:

rv = plpy.execute("SELECT name_key,address_key FROM file WHERE foreign_key = param_key)

name = rv[0]["name"]
address = rv[0]["address"]

# how to put results into the log?:
logging.info('  record: %(case)s')

$$ LANGUAGE plpythonu;
4

2 に答える 2

3

$n表記を使用します。

st = "SELECT name_key,address_key FROM file WHERE foreign_key = $1"
pst = plpy.prepare(st, [ "integer" ])
rv = plpy.execute(pst, [ param_key ])
于 2011-06-17T04:04:53.293 に答える
2

何を求めているのか正確にはわかりませんが、クエリの結合を制御するために使用している列をパラメータ化しようとしている場合、パラメータはそのようには機能しません。

本当にそれを行おうとしているのであれば、次のように、いつでも文字列フォーマットを使用してSQLクエリを作成できます。

rv = plpy.execute("SELECT name_key, address_key FROM file WHERE %s = %s" %
                  (foreign_key, param_key))

あなたが単にforeign_key文字列と比較することを探しているなら、Pauloはあなたが探している答えを持っています。

于 2011-06-17T03:47:20.790 に答える