Please provide a working and minimal mapping of your classes in question as 
well as the SQL you wish to emit.



On Tue, Nov 10, 2020, at 12:07 PM, kris wrote:
> 
> 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 [email protected].
>>>> 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 [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/e71b4af4-ff2f-463c-8007-67165b48fc20n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/e71b4af4-ff2f-463c-8007-67165b48fc20n%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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/0a50596a-0070-4db9-82eb-1e418e761636%40www.fastmail.com.

Reply via email to