PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sélectionnez les colonnes de l'appel de fonction dans sqlalchemy core

Vous voudrez utiliser FunctionElement.alias() et la légère column() :

from sqlalchemy import func, select, column

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

La documentation mentionne spécifiquement Postgresql comme cas d'utilisation pour cette construction. Ce qui précède produit :

SELECT col1, col2 
FROM my_function() AS anon_1

Utilisation du paramètre _selectable de column() vous pouvez également :

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

mais depuis _selectable est laissé sans papiers, ce n'est peut-être pas une bonne idée.