extremely helpful, like a beacon for a lost ship:) thanks

On Friday, December 11, 2020 at 5:59:50 AM UTC-8 Simon King wrote:

> I think this page might explain it:
>
>
> https://docs.sqlalchemy.org/en/13/core/sqlelement.html#column-elements-and-expressions
>
> The "case" function, like many other SQLAlchemy functions, returns an
> instance of a ClauseElement subclass. This instance is used later when
> building SQL queries. Columns themselves are also ClauseElement
> subclasses. You can construct them at any time and pass them around
> like any other python object. When it comes time to query the
> database, the SQLAlchemy compiler will build the query by traversing
> all the ClauseElements and converting them to the appropriate SQL.
>
> The column_property mechanism accepts a ClauseElement and causes it to
> be added to the SQL when you later query the table.
>
> Simon
>
> On Fri, Dec 11, 2020 at 11:11 AM Jinghui Niu <niuji...@gmail.com> wrote:
> >
> > Thanks. One thing to clarify, I noticed that here you used `case` 
> without using in a context of `select`. Is this considered a shorthand 
> within sqlalchemy?
> >
> > On Fri, Dec 11, 2020 at 2:16 AM Simon King <si...@simonking.org.uk> 
> wrote:
> >>
> >> You can do it, but you need to use an SQL conditional rather than a
> >> python one. In this case that would probably be a CASE expression:
> >>
> >> 
> https://docs.sqlalchemy.org/en/13/core/sqlelement.html#sqlalchemy.sql.expression.case
> >>
> >> I think it would look something like this:
> >>
> >> from sqlalchemy.sql import case
> >>
> >> aggr = column_property(
> >> case([(attr_a == 'go', attr_b + attr_c)],
> >> else_=attr_b - attr_c)
> >> )
> >>
> >> Hope that helps,
> >>
> >> Simon
> >>
> >> On Fri, Dec 11, 2020 at 9:13 AM niuji...@gmail.com <niuji...@gmail.com> 
> wrote:
> >> >
> >> > I have a mapped class:
> >> >
> >> > class Model(sqlalchemy.declarative_base()):
> >> > attr_a = Column(String)
> >> > attr_b = Column(Integer)
> >> > attr_c = Column(Integer)
> >> >
> >> > aggr = column_property(attr_b + attr_c IF attr_a=='go' ELSE attr_b - 
> attr_c)
> >> >
> >> > Last line is pseoudo code that requires some conditional logic. Is 
> such logic allowed inside column_property? Thanks a lot!
> >> >
> >> > --
> >> > 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/736f0ded-e39a-47fd-a0db-8ed33057d2a3n%40googlegroups.com
> .
> >>
> >> --
> >> 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 a topic in the 
> Google Groups "sqlalchemy" group.
> >> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/sqlalchemy/a_-Bqhh5wY0/unsubscribe.
> >> To unsubscribe from this group and all its topics, send an email to 
> sqlalchemy+...@googlegroups.com.
> >> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/CAFHwexeO2qgWeKeWPN-WH9LD8_Zch4jQRYeiB-WNbZrcMBrZFQ%40mail.gmail.com
> .
> >
> > --
> > 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/CAOQAhNeTVkH5m-XXotNyHV_wBrb3Ev9SJnJpTYF2sRuJvxmOFA%40mail.gmail.com
> .
>

-- 
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/93992e51-4b60-4093-b0fe-defd43c951e9n%40googlegroups.com.

Reply via email to