A little more detail.. 

N = alias (T)
node1 = session.query (N).filter(initial_node_filter).cte ('parents', 
recursive = True)
parents = topnode.union (DBSession.query(N).filter (N.id == 
node1.c.parent_id)
print session.query(parents).all()
shows an array 'result'   
How to force it return class N or T

On Tuesday, November 10, 2020 at 8:32:30 AM UTC-8 kris wrote:

>
> Initially I tried to remain solely in ORM constructs, I only broke down 
> and used the SQL expressions after hitting a wall.
>  
> A little more specifically: 
> when I try:
> session.query (part1).all ()   
> I receive an array of class 'sqlalchemy.util._collections.result'   while 
> I was expecting an array of class T as the part1 cte actually creates a set 
> of T.   
>
> Is there a way to let SA that result of the session.query(T).cte(...) is 
> actually a set of T?
> Is  there a way to convert 'result' tuples into class T?
>
> Thanks
>
>
>
>
>  
>
>
>
> On Tuesday, November 10, 2020 at 5:46:32 AM UTC-8 Mike Bayer wrote:
>
>> I would advise against using from_statement().   the Query object 
>> supports cte() and subqueries directly, see the example at 
>> https://docs.sqlalchemy.org/en/13/orm/query.html?highlight=query%20cte#sqlalchemy.orm.query.Query.cte
>>
>> alternatively if you are using 1.4 beta1 then you can use 
>> session.execute() directly using a select() object.
>>
>>
>>
>> On Tue, Nov 10, 2020, at 2:37 AM, kris wrote:
>>
>>
>> I need to query over a  table mapped to class T, 
>> I usually use session.query (T), however I am using two cte's            
>>                                             
>> part0 =  ... cte('part0')
>> part1 = ... cte('part1')                                                  
>>                                                                       part2 
>> = ... cte('aprt2')                                                          
>>                                                                   allparts 
>> = union (part1.select(), part2.select())                                    
>>                                               
>> session.query (allparts)  .. returns row record but I need it to return 
>> objects of type T?     
>>
>> I have tried using   q1 = session.query(T).from_statement (allnodes) 
>> which appears to convert and create objects of T, However, 
>> I cannot filter or order_by
>>
>> I have tried using the sql epxression level:
>> n = allparts.alias()
>>  DBSession.query (T).from_statement (select ([n]).where (...).order_by 
>> (...)).all()
>> or 
>>  DBSession.query(T).from_statement(DBSession.query 
>> (n).filter(...).order_by(...).statement).
>>
>> but I get NoSuchColumnError: "Could not locate column in row for column 
>> 'T.id'"
>>
>> Is there a way to let SA know how map the columns of the select 
>> expression to an object?
>>
>> Thanks.
>>
>>
>> -- 
>> SQLAlchemy - 
>> The Python SQL Toolkit and Object Relational Mapper
>>  
>> http://www.sqlalchemy.org/
>>  
>> To post example code, please provide an MCVE: Minimal, Complete, and 
>> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
>> description.
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "sqlalchemy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to sqlalchemy+...@googlegroups.com.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/sqlalchemy/7f27eaff-1f0e-40a9-a225-464414d04041n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/sqlalchemy/7f27eaff-1f0e-40a9-a225-464414d04041n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>>
>>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/e71b4af4-ff2f-463c-8007-67165b48fc20n%40googlegroups.com.

Reply via email to