2
私はpygtonからpostgresql関数と呼び出しを使用しています。カーソルをフェッチすることはできません。私はPythonでカーソルをフェッチできません。
これは私のpostgresql機能です。
CREATE LANGUAGE plpgsql;
create or replace FUNCTION getPerson() returns REFCURSOR
AS $$
DECLARE
p_cursor refcursor;
BEGIN
open p_cursor FOR
select m.name AS name, m.surname AS surname from person m;
RETURN p_cursor;
END; $$
LANGUAGE plpgsql;
これは
import psycopg2
try:
conn = psycopg2.connect(database="dt", user = "us", password = "pass", host = "127.0.0.1", port = "5432")
cur = conn.cursor()
res = cur.callproc('getPerson')
result = cur.fetchall()
for row in result:
print "printed row"
print row
conn.commit()
cur.close()
conn.close()
except:
print "error"
RESULT私のPythonの関数である:Abelistoは、プロシージャを呼び出すときに、あなたが最初のカーソルの名前を取得する必要があり、mentionnedとして
printed row
('<unnamed portal 1>',)
あなたは追加のステップを行う必要があります。 'からすべてのフェッチのためのさらに別のカーソルを作成します"<無名ポータル1>"(関数によって返された名前を使用)し、そこからデータを取得します。 – Abelisto