PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wählen Sie Spalten aus dem Funktionsaufruf im sqlalchemy-Kern aus

Sie sollten FunctionElement.alias() und die leichte column( ) :

from sqlalchemy import func, select, column

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

Die Dokumentation erwähnt ausdrücklich Postgresql als Anwendungsfall für dieses Konstrukt. Das Obige erzeugt:

SELECT col1, col2 
FROM my_function() AS anon_1

Mit dem Parameter _selectable von column() Sie könnten auch:

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

aber seit _selectable undokumentiert bleibt, ist dies möglicherweise keine gute Idee.