populate_existing doesn't change the behavior, but expunge_all does. The code works correctly now though - it's just our test setup/teardown that was causing trouble (although it does seem like weird behavior).
Thanks again for so much help with such a great library, Tony On Thursday, January 5, 2023 at 10:12:56 PM UTC+8 Mike Bayer wrote: > not as much set-ordering as gc, most likely. > > add populate_existing to the query, that also should force the lazy loader > to take effect > > On Thu, Jan 5, 2023, at 9:00 AM, Mike Bayer wrote: > > the "b" object in question is not really "lazy loaded" in the usual sense > here because it's already present in the session, that looks like an > unexpire query. the delete() might be just changing something where the > issue comes down to a set-ordering issue, perhaps. try adding > session.expunge_all() before the query and see if that makes things look > more expected. > > On Thu, Jan 5, 2023, at 1:27 AM, 'Tony Cosentini' via sqlalchemy wrote: > > Ok, I was able to at least create a script that easily reproduces what I'm > seeing - > https://gist.github.com/tonycosentini/22f42455c5068898efa473760e4f65ed > > We have some code that runs before our tests to ensure all the tables are > empty. When that runs, load_only doesn't seem to work. It sounds bizarre, > but that gist link contains a really short sample that reproduces the same > behavior. I'm running 1.4.44. > > Tony > > On Thursday, January 5, 2023 at 11:09:40 AM UTC+8 Tony Cosentini wrote: > > Funny enough, this is what I tried. I just wrote up a small sample script > using defaultload + load_only and sure enough it works. There must be > something in the code base I'm working with that prevents the load_only bit > from being applied. I'm pretty sure defaultload is woroking fine. I'll > report back if I find it. > > Thanks for clarifying! > > On Thursday, January 5, 2023 at 8:14:21 AM UTC+8 Michael Bayer wrote: > > yeah you can use defaultload.load_only > > > defaultload(ModelA.model_b).load_only(ModelB.only_field) > > > > On Wednesday, January 4, 2023 at 3:15:02 AM UTC-5 to...@revenuecat.com > wrote: > > Hi, > > This might be a strange question, but I tried to find this in the > documentation to no avail. > > Is it possible to use something like load_only to override which columns > are loaded in when loading a relationship (as in, a relationship that is > not loaded at first with the original query)? > > Something like: > class ModelB: > ... > > class ModelA: > model_b = relationship("ModelB") > > model_a = > session.query(ModelA).options(load_only(Model_b.only_field_i_want_in_the_future)).filter(ModelA.id==1).first() > > It's a bit strange, but I want to ensure if someone loads the model_b > property in the future, only specific columns are loaded in at first. > > I can do this if I just query for model_b via the foreign key instead of > using the relationship property, but I'd like to avoid that if possible. > > Sorry if this question is a bit weird/confusing, it's kind of a strange > use case. > > Thanks, > Tony > > > -- > 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/e2dc23f8-97cf-494e-8661-bc0267fdf075n%40googlegroups.com > > <https://groups.google.com/d/msgid/sqlalchemy/e2dc23f8-97cf-494e-8661-bc0267fdf075n%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/2c67aa85-06c9-4f64-bca9-fb2f0f91da7a%40app.fastmail.com > > <https://groups.google.com/d/msgid/sqlalchemy/2c67aa85-06c9-4f64-bca9-fb2f0f91da7a%40app.fastmail.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/ea3ba608-c7ce-4c39-85cb-1d87a58f5229n%40googlegroups.com.