Thanks! make_transient_to_detached did the trick! ill add the answer to my question.
On Friday, 2 March 2018 11:56:30 UTC-5, Mike Bayer wrote: > > please add an answer to your stackoverflow question as well > > On Fri, Mar 2, 2018 at 11:55 AM, Mike Bayer <mik...@zzzcomputing.com > <javascript:>> wrote: > > On Fri, Mar 2, 2018 at 11:55 AM, Harshvardhan Gupta > > <harsh...@gmail.com <javascript:>> wrote: > >> I meant, do the query only when email is required, and not unless > anything > >> else is required. > >> if I call merge(), the query is instantly emitted. I want it to be > emitted > >> only if an unloaded attribute is requested. > > > > make the object act like detached and expired, then associate with the > session: > > > > from sqlalchemy.orm.session import make_transient_to_detached > > a1 = A(id=1) > > make_transient_to_detached(a1) > > s.add(a1) > > > > print("-------------------") > > assert a1.data == "some data" > > assert len(a1.bs) == 3 > > > > > > > > > > > >> > >> On Friday, 2 March 2018 11:51:20 UTC-5, Mike Bayer wrote: > >>> > >>> On Fri, Mar 2, 2018 at 11:30 AM, Harshvardhan Gupta > >>> <harsh...@gmail.com> wrote: > >>> > There is no way to achieve what I want without doing the query? > >>> > merge seems to do the whole query. > >>> > >>> you have a User row, and you want to load columns in that row, like > >>> "full_name". How would you like to achieve that without emitting a > >>> query? > >>> > >>> > >>> > >>> > I also have asked this question on stack overflow which talks about > my > >>> > use > >>> > case : > >>> > > >>> > > >>> > > https://stackoverflow.com/questions/49062520/querying-properties-of-transient-models-in-sqlalchemy > > >>> > > >>> > > >>> > On Friday, 2 March 2018 11:27:31 UTC-5, Mike Bayer wrote: > >>> >> > >>> >> On Fri, Mar 2, 2018 at 11:21 AM, Harshvardhan Gupta > >>> >> <harsh...@gmail.com> wrote: > >>> >> > I also tried loading a related attribute , and it still returns > None. > >>> >> > >>> >> > >>> >> you need to merge the object: > >>> >> > >>> >> my_user = session.merge(my_user) > >>> >> > >>> >> that is your only option. E.g. do the query. > >>> >> > >>> >> > > >>> >> > > >>> >> > On Friday, 2 March 2018 11:00:47 UTC-5, Harshvardhan Gupta wrote: > >>> >> >> > >>> >> >> Thanks, I am able to call my object, but the attribute prints > none: > >>> >> >> > >>> >> >> > >>> >> >> E.g. my model is: > >>> >> >> > >>> >> >> class User(Dictifiable, db.Model, UserMixin): > >>> >> >> __tablename__ = 'user' > >>> >> >> > >>> >> >> id = Column(Integer, Sequence('user_id_seq'), > primary_key=True) > >>> >> >> full_name = Column(String(50)) > >>> >> >> > >>> >> >> > >>> >> >> And this is what I have done : > >>> >> >> > >>> >> >> `u_lazy = User(id=1)` > >>> >> >> `db.session().enable_relationship_loading(u_lazy)` > >>> >> >> when i try to print u_lazy.full_name, it shows null (it is non > null > >>> >> >> in > >>> >> >> db > >>> >> >> ) > >>> >> >> > >>> >> >> > >>> >> >> On Friday, 2 March 2018 10:55:11 UTC-5, Mike Bayer wrote: > >>> >> >>> > >>> >> >>> On Fri, Mar 2, 2018 at 10:52 AM, Harshvardhan Gupta > >>> >> >>> <harsh...@gmail.com> wrote: > >>> >> >>> > Thanks for the reply. > >>> >> >>> > > >>> >> >>> > There is a guarantee that the user will exist ,why is why I > want > >>> >> >>> > to > >>> >> >>> > prevent that extra db query. > >>> >> >>> > > >>> >> >>> > When I try to do enable relationship loading ,I get the error > : > >>> >> >>> > Scoped session has no attribute enable relationship loading. > >>> >> >>> > >>> >> >>> that's a scoped_session(), not a Session, access the Session by > >>> >> >>> calling it: scoped_session().enable_relationship_loading(obj) > >>> >> >>> > >>> >> >>> > > >>> >> >>> > -- > >>> >> >>> > 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 post to this group, send email to > sqlal...@googlegroups.com. > >>> >> >>> > Visit this group at > https://groups.google.com/group/sqlalchemy. > >>> >> >>> > For more options, visit https://groups.google.com/d/optout. > >>> >> > > >>> >> > -- > >>> >> > 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 post to this group, send email to sqlal...@googlegroups.com. > >>> >> > Visit this group at https://groups.google.com/group/sqlalchemy. > >>> >> > For more options, visit https://groups.google.com/d/optout. > >>> > > >>> > -- > >>> > 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 post to this group, send email to sqlal...@googlegroups.com. > >>> > Visit this group at https://groups.google.com/group/sqlalchemy. > >>> > For more options, visit https://groups.google.com/d/optout. > >> > >> -- > >> 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 <javascript:>. > >> To post to this group, send email to sqlal...@googlegroups.com > <javascript:>. > >> Visit this group at https://groups.google.com/group/sqlalchemy. > >> For more options, visit https://groups.google.com/d/optout. > -- 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 post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.