MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_deferred_column_query

Method test_deferred_column_query

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

Source from the content-addressed store, hash-verified

2059 )
2060
2061 def test_deferred_column_query(self):
2062 Book, book = self.classes.Book, self.tables.book
2063 self.mapper_registry.map_imperatively(Book, book)
2064 sess = fixture_session()
2065
2066 b = Book(
2067 id=1,
2068 title="Essential SQLAlchemy",
2069 summary="some summary",
2070 excerpt="some excerpt",
2071 )
2072 sess.add(b)
2073 sess.commit()
2074
2075 # defer 'excerpt' at query level instead of mapping level
2076 b1 = sess.query(Book).options(defer(Book.excerpt)).first()
2077 sess.expire(b1, ["summary"])
2078 sess.close()
2079
2080 def go():
2081 b2 = sess.merge(b1, load=False)
2082
2083 # should not emit load for deferred 'excerpt'
2084 eq_(b2.summary, "some summary")
2085 not_in("excerpt", b2.__dict__)
2086
2087 # now it should emit load for deferred 'excerpt'
2088 eq_(b2.excerpt, "some excerpt")
2089 in_("excerpt", b2.__dict__)
2090
2091 self.sql_eq_(
2092 go,
2093 [
2094 (
2095 "SELECT book.summary FROM book WHERE book.id = :pk_1",
2096 {"pk_1": 1},
2097 ),
2098 (
2099 "SELECT book.excerpt FROM book WHERE book.id = :pk_1",
2100 {"pk_1": 1},
2101 ),
2102 ],
2103 )
2104
2105
2106class 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