SQLAlchemy从postgresql存储过程中获取输出参数

时间:2013-09-10 06:29:34

标签: stored-procedures sqlalchemy postgresql-9.2 output-parameter

我正在使用Postgresql9.2和SQLAlchemy0.8。我在数据库中有一个存储过程,它有许多输出参数,我希望它们通过点表示法使用。但到目前为止,我已经悲惨地失败了。以下是我的代码的样子。

显示我正在做什么的一个例子如下。

CREATE OR REPLACE FUNCTION stored_proc_name(IN in_user_id bigint, IN in_amount bigint,
OUT pout_one bigint, OUT pout_two bigint )
      RETURNS record AS
$BODY$
begin
    select count(*) as AliasOne into pout_one from tabe_names where conditions;
    select user_name as AliasTwo into pout_two from table_name where condition;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION stored_proc_name(bigint, bigint)
  OWNER TO postgres; 

我的代码段如下:

#session object from sessionmaker
result_obj = session.execute(func.stored_proc_name(user_id, amount))
print result_obj.fetechall()
#The above print statement prints following on the console.
>> [('(1,100)',)]

显然上面的结果取出了字符串。我想要的是类似result_obj.pout_one的东西,并在我的代码中使用它。

有没有办法实现它。我们非常感谢您正在使用的代码段。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

query = select([column('pout_one'), column('pout_two')], 
               from_obj=[func.stored_proc_name(user_id, amount)])
session.execute(query)

这方面的灵感来自SQLAlchemy列表,其中有人问similar question。这可能会产生所需的输出(我现在无法测试)。