MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / test_deferred_column_query

Method test_deferred_column_query

test/orm/test_merge.py:2040–2084  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2038 )
2039
2040 def test_deferred_column_query(self):
2041 Book, book = self.classes.Book, self.tables.book
2042 self.mapper_registry.map_imperatively(Book, book)
2043 sess = fixture_session()
2044
2045 b = Book(
2046 id=1,
2047 title="Essential SQLAlchemy",
2048 summary="some summary",
2049 excerpt="some excerpt",
2050 )
2051 sess.add(b)
2052 sess.commit()
2053
2054 # defer 'excerpt' at query level instead of mapping level
2055 b1 = sess.query(Book).options(defer(Book.excerpt)).first()
2056 sess.expire(b1, ["summary"])
2057 sess.close()
2058
2059 def go():
2060 b2 = sess.merge(b1, load=False)
2061
2062 # should not emit load for deferred 'excerpt'
2063 eq_(b2.summary, "some summary")
2064 not_in("excerpt", b2.__dict__)
2065
2066 # now it should emit load for deferred 'excerpt'
2067 eq_(b2.excerpt, "some excerpt")
2068 in_("excerpt", b2.__dict__)
2069
2070 self.sql_eq_(
2071 go,
2072 [
2073 (
2074 "SELECT book.summary AS book_summary "
2075 "FROM book WHERE book.id = :pk_1",
2076 {"pk_1": 1},
2077 ),
2078 (
2079 "SELECT book.excerpt AS book_excerpt "
2080 "FROM book WHERE book.id = :pk_1",
2081 {"pk_1": 1},
2082 ),
2083 ],
2084 )
2085
2086
2087class MutableMergeTest(fixtures.MappedTest):

Callers

nothing calls this directly

Calls 12

fixture_sessionFunction · 0.90
deferFunction · 0.90
map_imperativelyMethod · 0.80
sql_eq_Method · 0.80
BookClass · 0.70
addMethod · 0.45
commitMethod · 0.45
firstMethod · 0.45
optionsMethod · 0.45
queryMethod · 0.45
expireMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected