From 632f4f5f0e4896481e583ede3c47b3ea53020864 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Sun, 23 Nov 2025 09:23:02 -0800 Subject: [PATCH] Performance optimization --- sqlite_utils/db.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 02962ac..a8ed704 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -3027,17 +3027,20 @@ class Table(Queryable): if list_mode: # In list mode, records are already lists of values + num_columns = len(all_columns) + has_extracts = bool(extracts) for record in chunk: - record_values = [] - for i, key in enumerate(all_columns): - if i < len(record): - value = jsonify_if_needed(record[i]) - else: - value = None - if key in extracts: - extract_table = extracts[key] - value = self.db[extract_table].lookup({"value": value}) - record_values.append(value) + # Pad short records with None, truncate long ones + record_len = len(record) + if record_len < num_columns: + record_values = [jsonify_if_needed(v) for v in record] + [None] * (num_columns - record_len) + else: + record_values = [jsonify_if_needed(v) for v in record[:num_columns]] + # Only process extracts if there are any + if has_extracts: + for i, key in enumerate(all_columns): + if key in extracts: + record_values[i] = self.db[extracts[key]].lookup({"value": record_values[i]}) values.append(record_values) else: # Dict mode: original logic