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 [email protected] >>> 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 [email protected]. > 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/sqlalchemy/2c67aa85-06c9-4f64-bca9-fb2f0f91da7a%40app.fastmail.com.
