diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index a51bba7..d44b238 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -977,7 +977,10 @@ class Table(Queryable): # we need to adjust the batch_size down if we have too many cols records = iter(records) # Peek at first record to count its columns: - first_record = next(records) + try: + first_record = next(records) + except StopIteration: + return self # It was an empty list num_columns = len(first_record.keys()) assert ( num_columns <= SQLITE_MAX_VARS diff --git a/tests/test_create.py b/tests/test_create.py index 05dfe4a..e2dec84 100644 --- a/tests/test_create.py +++ b/tests/test_create.py @@ -789,3 +789,12 @@ def test_drop_view(fresh_db): assert ["foo_view"] == fresh_db.view_names() assert None is fresh_db["foo_view"].drop() assert [] == fresh_db.view_names() + + +def test_insert_upsert_all_empty_list(fresh_db): + fresh_db["t"].insert({"foo": 1}) + assert 1 == fresh_db["t"].count + fresh_db["t"].insert_all([]) + assert 1 == fresh_db["t"].count + fresh_db["t"].upsert_all([]) + assert 1 == fresh_db["t"].count