summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-12-09 15:56:15 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2022-12-09 15:56:15 -0500
commit44170aee47a021883c6244f702de2e4385a5cd1d (patch)
tree6ef00a6c3db06c790ed1411a9c13588eee30a234 /test/sql
parent34fb0f49b5667970157676772c49d3391865ee00 (diff)
downloadsqlalchemy-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.py46
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