From 436ac10a1de25ced5e7f4299e7cda2d2d798b4cc Mon Sep 17 00:00:00 2001 From: Rami Abdelrazzaq Date: Mon, 14 Sep 2026 08:28:00 -0500 Subject: [PATCH] Test CSV export with mapping row factories --- tests/test_export.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/test_export.py b/tests/test_export.py index b2a0309..5cfbd51 100644 --- a/tests/test_export.py +++ b/tests/test_export.py @@ -52,6 +52,28 @@ def test_rows_to_csv_file_accepts_dialect_class(): db.close() +def test_rows_to_csv_file_with_mapping_row_factory(): + db = sqlite3.connect(":memory:") + db.execute("create table creatures (id integer, name text)") + db.executemany( + "insert into creatures (id, name) values (?, ?)", + ((1, "Cleo"), (2, "Cardi, Jr.")), + ) + + def dict_factory(cursor, row): + return { + column[0]: value + for column, value in zip(cursor.description, row) + } + + db.row_factory = dict_factory + cursor = db.execute("select id, name from creatures order by id") + output = io.StringIO(newline="") + rows_to_csv_file(cursor, output, lineterminator="\n") + assert output.getvalue() == 'id,name\n1,Cleo\n2,"Cardi, Jr."\n' + db.close() + + @pytest.mark.parametrize("header", (True, False)) def test_rows_to_csv_file_requires_result_columns(header): db = sqlite3.connect(":memory:")