【问题标题】:Select columns from function call in sqlalchemy core从 sqlalchemy 核心中的函数调用中选择列
【发布时间】:2017-03-31 01:36:14
【问题描述】:

在 postgresql 中我有 select col1, col2 from my_function()。我怎样才能在 sqlalchemy 核心中做到这一点?

select(func.my_function()) 将结果作为字符串给出,但我想要一个元组。

【问题讨论】:

  • 它往往不能很好地与 SP 一起使用,我记得放弃了这个并运行原始命令。

标签: python sql postgresql stored-procedures sqlalchemy


【解决方案1】:

你会想要使用FunctionElement.alias() 和轻量级的column()

from sqlalchemy import func, select, column

stmt = select([column('col1'), column('col2')]).\
    select_from(func.my_function().alias())

文档特别提到了 Postgresql 作为这个构造的一个用例。以上产生:

SELECT col1, col2 
FROM my_function() AS anon_1

使用column() 的参数_selectable,您还可以:

In [4]: fn = func.my_function().alias()

In [5]: stmt = select([column('col1', _selectable=fn),
   ...:                column('col2', _selectable=fn)])

In [6]: print(stmt)
SELECT anon_1.col1, anon_1.col2 
FROM my_function() AS anon_1

但由于 _selectable 未记录在案,这可能不是一个好主意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2014-02-22
    相关资源
    最近更新 更多