sql >> Database >  >> RDS >> PostgreSQL

Selecteer kolommen uit functieaanroep in sqlalchemy core

Gebruik FunctionElement.alias() en de lichtgewicht column() :

from sqlalchemy import func, select, column

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

De documentatie vermeldt specifiek Postgresql als een use-case voor deze constructie. Het bovenstaande levert:

SELECT col1, col2 
FROM my_function() AS anon_1

Met behulp van de parameter _selectable van column() je kunt ook:

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

maar sinds _selectable zonder papieren wordt achtergelaten, is dit misschien geen goed idee.




  1. SQL-ontwikkelaarsfout met modules uitschakelen en doorgaan

  2. equivalent van parallelle zoekopdracht van ORACLE in mysql

  3. MySQL-volgorde op relevantie

  4. Privé berichtensysteem. Het laatste bericht van elk gesprek weergeven