diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-12-09 15:56:15 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2022-12-09 15:56:15 -0500 |
| commit | 44170aee47a021883c6244f702de2e4385a5cd1d (patch) | |
| tree | 6ef00a6c3db06c790ed1411a9c13588eee30a234 /test/sql | |
| parent | 34fb0f49b5667970157676772c49d3391865ee00 (diff) | |
| download | sqlalchemy-44170aee47a021883c6244f702de2e4385a5cd1d.tar.gz | |
look out for extras=None in freeze
Fixed issue where :meth:`_engine.Result.freeze` method would not work for
textual SQL using either :func:`_sql.text` or
:meth:`_engine.Connection.exec_driver_sql`.
Fixes: #8963
Change-Id: Ia131c6ac41a4adf32eb1bf1abf23930ef395f16c
Diffstat (limited to 'test/sql')
| -rw-r--r-- | test/sql/test_resultset.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/sql/test_resultset.py b/test/sql/test_resultset.py index 7f1124c84..66584c96e 100644 --- a/test/sql/test_resultset.py +++ b/test/sql/test_resultset.py @@ -107,6 +107,52 @@ class CursorResultTest(fixtures.TablesTest): Column("y", String(50)), ) + @testing.variation( + "type_", ["text", "driversql", "core", "textstar", "driverstar"] + ) + def test_freeze(self, type_, connection): + """test #8963""" + + users = self.tables.users + connection.execute( + users.insert(), + [ + dict(user_id=1, user_name="john"), + dict(user_id=2, user_name="jack"), + ], + ) + + if type_.core: + stmt = select(users).order_by(users.c.user_id) + else: + if "star" in type_.name: + stmt = "select * from users order by user_id" + else: + stmt = "select user_id, user_name from users order by user_id" + + if "text" in type_.name: + stmt = text(stmt) + + if "driver" in type_.name: + result = connection.exec_driver_sql(stmt) + else: + result = connection.execute(stmt) + + frozen = result.freeze() + + unfrozen = frozen() + eq_(unfrozen.keys(), ["user_id", "user_name"]) + eq_(unfrozen.all(), [(1, "john"), (2, "jack")]) + + unfrozen = frozen() + eq_( + unfrozen.mappings().all(), + [ + {"user_id": 1, "user_name": "john"}, + {"user_id": 2, "user_name": "jack"}, + ], + ) + @testing.requires.insert_executemany_returning def test_splice_horizontally(self, connection): users = self.tables.users |
