我正在使用 postgresql 9.2 编写一个 plpython 函数。假设代码已经执行了一个返回 hstore 字符串的查询。然后我想发出一个查询:
SELECT hstore_to_matrix('hstorestring')
假设它是一个包含 hstore 字符串的字符串:A=>B
create or replace function testfreq()
returns text
as $$
hstorestring = '"GT"=>"thing","HS"=>"[-0.1,-0.2]"'
rv2 = plpy.execute("SELECT hstore_to_matrix(%s)" % (plpy.quote_literal(hstorestring)))
plpy.log("Hstore:",rv2[0])
return("done")
$$ LANGUAGE plpythonu;
运行方式
select testfreq();
退货
testdb=# select testfreq();
ERROR: plpy.Error: unrecognized error in PLy_spi_execute_fetch_result
CONTEXT: Traceback (most recent call last):
PL/Python function "testfreq", line 3, in <module>
rv2 = plpy.execute("SELECT hstore_to_matrix(%s)" % (plpy.quote_literal(hstorestring)))
PL/Python function "testfreq":
如果您在上面的代码中替换为 hstore_to_array,则输出为:
testdb=# select testfreq();
LOG: ('Hstore:', {'hstore_to_array': ['GT', 'thing', 'HS', '[-0.1,-0.2]']})
CONTEXT: PL/Python function "testfreq"
testfreq
----------
done
(1 row)
我还尝试使用 hstore 运算符而不是函数,并且我已经在 pgsql 终端中尝试了这些函数,以确保它们在未嵌入 python 时工作。任何指针将不胜感激。