[Sqlalchemy-tickets] Issue #3510: noload behaves like lazyload (zzzeek/sqlalchemy)
Brought to you by:
zzzeek
|
From: thiefmaster <iss...@bi...> - 2015-08-11 16:18:44
|
New issue 3510: noload behaves like lazyload https://bitbucket.org/zzzeek/sqlalchemy/issues/3510/noload-behaves-like-lazyload thiefmaster: I would expect the last `print` in this script to show `None`, but as of 1.0.x it shows a C object (which is lazy-loaded). ```python from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class A(Base): __tablename__ = 'test_a' id = Column(Integer, primary_key=True) class B(Base): __tablename__ = 'test_b' id = Column(Integer, primary_key=True) a_id = Column(Integer, ForeignKey('test_a.id')) c_id = Column(Integer, ForeignKey('test_c.id')) a = relationship('A', backref=backref('b')) c = relationship('C', backref=backref('b')) class C(Base): __tablename__ = 'test_c' id = Column(Integer, primary_key=True) e = create_engine('sqlite:///:memory:', echo=True) Base.metadata.create_all(e) s = Session(e) s.add(B(a=A(), c=C())) s.commit() a = s.query(A).options(joinedload('b').noload('c')).all() print a[0] print a[0].b[0] print a[0].b[0].c ``` Script + full output: https://gist.github.com/ThiefMaster/d6c16d26c77507612b0d |