2

Я использую Postgresql9.2 и SQLAlchemy0.8. У меня есть хранимая процедура в базе данных, у которой много параметров, и я хочу, чтобы они использовались с помощью точечной нотации. Но до сих пор я терпел неудачу. Ниже приведен код моего кода.SQLAlchemy получает выходные параметры из хранимой процедуры postgresql

Пример, чтобы показать, что я делаю, выглядит следующим образом.

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 и использовать его в своем коде.

Есть ли способ его достижения. Фрагмент рабочего кода будет высоко оценен.

Большое спасибо!

ответ

2

Вы могли бы попробовать что-то вроде этого:

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

Вдохновением для этого является из списка SQLAlchemy, где кто-то задал similar question. Это может привести к желаемому результату (я не могу проверить его прямо сейчас).

+0

Удивительный! Большое спасибо. Необходимо добавить 'Column type'. – user990150

 Смежные вопросы

  • Нет связанных вопросов^_^