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.