From 8af34609f323dc50bc554229cabae7b4ba108701 Mon Sep 17 00:00:00 2001 From: Rami Abdelrazzaq Date: Mon, 14 Sep 2026 08:27:46 -0500 Subject: [PATCH] Handle mapping rows in CSV export helper --- sqlite_utils/export.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sqlite_utils/export.py b/sqlite_utils/export.py index 754fc74..fa8eba9 100644 --- a/sqlite_utils/export.py +++ b/sqlite_utils/export.py @@ -1,4 +1,5 @@ import csv +from collections.abc import Mapping from typing import Any, Sequence, TextIO, Type, Union CsvDialect = Union[str, csv.Dialect, Type[csv.Dialect]] @@ -24,7 +25,16 @@ def rows_to_csv_file( if description is None: raise ValueError("Cursor does not have result columns") + columns = [column[0] for column in description] writer = csv.writer(file, dialect=dialect, **writer_kwargs) if header: - writer.writerow([column[0] for column in description]) - writer.writerows(cursor) + writer.writerow(columns) + + def rows(): + for row in cursor: + if isinstance(row, Mapping): + yield [row[column] for column in columns] + else: + yield row + + writer.writerows(rows())