if you use 1.4 /2.0 querying style you can call upon the scalars() method of the result
result = session.execute(select(MyClass.attr)) elements = result.scalars().all() or result = session.scalars(select(...)) elements = result.all() otherwise you can just iterate like this: elements = [e for e, in sess.query(MyClass.attr)] On Wed, Nov 10, 2021, at 3:22 PM, niuji...@gmail.com wrote: > This is very helpful. > > How to return a list of scalar values in this case? Now the query returns a > list of tuples, and each tuple only has one value, which is what actually > needed. Is there a parameter to return a series of scalar value like this? > On Wednesday, November 10, 2021 at 12:05:27 PM UTC-8 Mike Bayer wrote: >> __ >> it has to do with how SQLAlchemy determines the FROM list in a select() >> statement. >> >> if you say select(table.c.id), it knows that "table" is the thing to select >> "from". >> >> however, if you say select(select(...).correlate(...).scalar_subquery()), >> that's assuming it's a SELECT from a scalar subquery, which normally does >> not imply a FROM clause. >> >> In this case, that you are saying correlate(C), we could argue that *does* >> imply a FROM clause of some kind, but SQLAlchemy doesn't make that leap >> right now. You might have said correlate(C, D) or correlate_except(Q) and >> then it's not as clear what the scalar subquery would be selected FROM. >> >> going further, there *could* be some new kind of API where a scalar subquery >> could suggest a FROM clause that should be used when this subquery is >> selected FROM. that would allow your column_property() to be built up such >> that it would be "self sufficient" when queried by itself. but again we >> don't have that right now. >> >> with all those options exhausted, for SQLAlchemy to be given >> select(select().scalar_subquery()), and then to produce "SELECT * FROM >> (SELECT ....) FROM <some table>", that FROM part has to be added on >> explicitly, i.e. select(select().scalar_subuqery()).select_from(<some >> table>). >> >> >> >> On Wed, Nov 10, 2021, at 2:35 PM, niuji...@gmail.com wrote: >>> This works! Could you explain a little about this differences by using >>> select_from here? I think this is very important and useful, really want to >>> learn it right. >>> >>> On Wednesday, November 10, 2021 at 5:55:44 AM UTC-8 Mike Bayer wrote: >>>> __ >>>> try calling: >>>> >>>> query(C.symbol_from_a).select_from(C) >>>> >>>> >>>> >>>> On Wed, Nov 10, 2021, at 4:50 AM, niuji...@gmail.com wrote: >>>>> class A(Base): >>>>> primary_id = Column(Integer, prirmary_key=True) >>>>> some_A_marker = Column(String) >>>>> >>>>> class B(Base): >>>>> primary_id = Column(Integer, primary_key=True) >>>>> referencing_A_id = Column(Integer, ForeignKey(A.primary_id)) >>>>> >>>>> class C(Base): >>>>> primary_id = Column(Integer, primary_key=True) >>>>> basedOn_B_id = Column(Integer, ForeignKey(B.primary_id)) >>>>> symbol_from_A = column_property( >>>>> >>>>> sasql.select(A.some_A_marker).select_from(A).join(B).where(B.primary_id >>>>> == C.basedOn_B_id).correlate(C).scalar_subquery().label("symbol_from_A") >>>>> ) >>>>> >>>>> >>>>> When I query this highlighted column_property along with the whole >>>>> object, it works fine: >>>>> >>>>> >>> sess.query(C, C.symbol_from_A).all() >>>>> >>>>> However, when I query this column_property alone, it doesn't work: >>>>> >>>>> >>>sess.query(C.symbol_from_A).distinct().all() >>>>> >>>>> I noticed that somehow the correlated subquery wasn't executed property >>>>> when query that column_property independently. >>>>> >>>>> How to solve this? >>>>> >>>>> >>>>> >>>>> -- >>>>> 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/f7a0c360-ada2-456b-b02a-498ca50334f3n%40googlegroups.com >>>>> >>>>> <https://groups.google.com/d/msgid/sqlalchemy/f7a0c360-ada2-456b-b02a-498ca50334f3n%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+...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sqlalchemy/8549e3f3-11fb-47e1-b86a-270fecce8caan%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/sqlalchemy/8549e3f3-11fb-47e1-b86a-270fecce8caan%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/b2059a01-5c3f-455c-aa3c-44590fe2f166n%40googlegroups.com > > <https://groups.google.com/d/msgid/sqlalchemy/b2059a01-5c3f-455c-aa3c-44590fe2f166n%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/912c080a-e77a-48b8-9720-96fb5426ec7f%40www.fastmail.com.