我在PostgreSQL函数的false with that image name
中有这个赋值:
true
查询可以返回1个文本结果,也可以不返回任何内容。
问题在于,如果查询没有返回任何内容,plpythonu
条件仍为result=plpy.execute("select value from table where doctitle like '%%%s%%'"%projectname)
if result:
final = result[0]["value"]
(因为它包含值列),我希望仅result:
的分配发生如果值列中有实际值。我该如何检查?
答案 0 :(得分:1)
结果对象模拟列表或字典对象。检查它的长度:
if len(result) > 0:
但是您的测试应该作为空列表或字典评估为False
:
create or replace function p()
returns boolean as $$
result = plpy.execute('select 1 as i where false')
if result: return True
else: return False
$$ language plpythonu;
返回false
:
select p();
p
---
f
将参数传递给execute
而不是替换自己。否则你很容易受到SQL注入:
query = """
select value
from table
where doctitle like format('%%%s%%', $1)
"""
plan = plpy.prepare(query, ["text"])
result = plpy.execute(plan, [_text_parameter])
if result:
final = result[0]["value"]
https://www.postgresql.org/docs/current/static/plpython-database.html