2016-12-21 2 views
-1

У нас есть база данных PostgreSQL с хранимой процедурой, которая возвращает SETOF типа с этим определением:Почему sqlalchmy func возвращает строки вместо целых?

Column | Type | Modifiers 
-------+---------+---------- 
my_id | integer | 

Однако, когда я выполняю функцию:

for result in session.query(func.get_my_thing(someval)): 
    print(result) 

Это дает мне результаты как это:

('(8968)',) 

Да, это кортеж из строк, которые выглядят вроде как один элемент кортежа. Это определенно строка, то есть print(type(result[0])) показывает, что она имеет тип str.

Почему он возвращает этот тип строки вместо целого числа, возвращаемого функцией?

ответ

0

Я частично отвечаю на ответ. Глядя на излучаемого SQL это разница между:

SELECT get_my_thing(someval) 

И

SELECT * FROM get_my_thing(someval) 

Прежний что излучаемый

session.query(func.get_my_thing(someval)) 

Я не уверен, как испустить последний SQL

+0

Создайте [псевдоним] (http://docs.sqlalchemy.org/en/latest/core/functions.html#sqlalchemy.sql.functions.FunctionElement.alias) из f и следуйте инструкциям по его использованию в 'select_from'. Пример специально для postgresql. –

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