Hi there, After implementing the solutions for raising on column usages brought up at https://groups.google.com/forum/#!topic/sqlalchemy/Lbyq8Co95mQ, I've come across an issue where a deferred column is being loaded by default after a series of function calls. Here's the minimal repro I could find:
class MyColumn(Column): pass @compiles(MyColumn) def compile_column(element, compiler, **kw): raise Exception('compile_column') class MyTable(): id = Column(Integer, primary_key=True) deferred_column = deferred(MyColumn(...)) from sqlalchemy.orm.session import make_transient, make_transient_to_detached item = MyTable.query.first() # doesn't load deferred_column make_transient(item) make_transient_to_detached(item) db.session.add(item) db.session.expire_all() item.id # Ordinarily, loading item.id should not be accessing deferred_column > Exception: compile_column It looks like it's hitting this line: https://github.com/zzzeek/sqlalchemy/blob/887fb3ebaad20847edc752f5fcf072ace947d56a/lib/sqlalchemy/orm/loading.py#L797, which seems to be where the column is getting undeferred — is this behavior intentional? (There also may be a simpler way to reproduce this behavior.) If it is intentional, is there anyway to work around this so the column isn't loaded in? (In case it helps, we use make_transient and make_transient_to_detached for tests to ensure each test starts in the same session state even while using nested transactions). Thank you! Neena -- 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.