(self)
| 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 | |
| 2087 | class MutableMergeTest(fixtures.MappedTest): |
nothing calls this directly
no test coverage detected