1. Yes, literal_column does the trick.
2. I have tried with hybrid_method. It also works with literal_column, but 
the problem here is that it's not including the field automatically in the 
query? I suspect this is by design, but in my case it's required to execute 
function so that I get a value from database and not from python method. 
Can I force hybrid_method to always get a value from database?

On Sunday, 17 May 2020 16:37:25 UTC+2, Mike Bayer wrote:
>
>
>
> On Sun, May 17, 2020, at 6:54 AM, Erol Merdanović wrote:
>
> Hi
>
> First thank you for your reply.
>
> @Mike, yes. I wish to pass the row products row. I'm attaching working SQL
>
> SELECT *, get_product_price(products) FROM products;
>
>
> This works great in postgres. I tried it also on Mysql but they support 
> only scalar values. I suspect that might work with other databases. I don't 
> need to pass any dynamic arguments to column_property, it just needs to 
> reference to existing row. I'll try with hybrid and let you know.
>
>
>
> oh is that a fixed expression ?    you can probably get away with it like 
> this then:
>
>
> from sqlalchemy import literal_column
>
> Product.base_price = column_property(
>     cast(func.get_product_price(literal_column("products")), Numeric(15, 
> 5)).label("base_price")
> )
>
> that is, if you want exactly the word "products" to appear in the SQL, and 
> nothing else about it matters, you can just do it that way.
>
>
>
>
>
>
> @Jonathan
>
> Yes, if I pass the ID it works great. I'm just worried about the 
> performance. If I want to execute then function in huge SELECT, I would 
> need to do reselect on each row. 
>
>
> On Saturday, 16 May 2020 21:42:54 UTC+2, Jonathan Vanasco wrote:
>
> It’s been a while since I’ve worked on stuff like this, but IIRC the 
> simplest way was to use a function that accepts an ID and to flush in 
> SqlAlchemy before executing it. Then you select the necessary row fields 
> within the sql function, instead of passing args in or trying to pass a row 
> in. 
>
> In my experience, when you pass multiple args in, the function becomes 
> very fragile and prone to break as your model changes.
>
>
> --
> 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 sqlal...@googlegroups.com <javascript:>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/fa2e6ac5-22ed-4448-8228-b29a11682975%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/fa2e6ac5-22ed-4448-8228-b29a11682975%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/4600dc66-da7c-4466-b8c7-0c3b90c74acf%40googlegroups.com.

Reply via email to