diff --git a/sqlite_utils/utils.py b/sqlite_utils/utils.py index 8968a05..d086ddb 100644 --- a/sqlite_utils/utils.py +++ b/sqlite_utils/utils.py @@ -13,7 +13,8 @@ def suggest_column_types(records): all_column_types = {} for record in records: for key, value in record.items(): - all_column_types.setdefault(key, set()).add(type(value)) + if value is not None: + all_column_types.setdefault(key, set()).add(type(value)) column_types = {} for key, types in all_column_types.items(): if len(types) == 1: diff --git a/tests/test_suggest_column_types.py b/tests/test_suggest_column_types.py index 9427444..a392c09 100644 --- a/tests/test_suggest_column_types.py +++ b/tests/test_suggest_column_types.py @@ -7,14 +7,20 @@ from sqlite_utils.utils import suggest_column_types "records,types", [ ([{"a": 1}], {"a": int}), + ([{"a": 1}, {"a": None}], {"a": int}), ([{"a": "baz"}], {"a": str}), + ([{"a": "baz"}, {"a": None}], {"a": str}), ([{"a": 1.2}], {"a": float}), + ([{"a": 1.2}, {"a": None}], {"a": float}), ([{"a": [1]}], {"a": str}), + ([{"a": [1]}, {"a": None}], {"a": str}), ([{"a": (1,)}], {"a": str}), ([{"a": {"b": 1}}], {"a": str}), + ([{"a": {"b": 1}}, {"a": None}], {"a": str}), ([{"a": OrderedDict({"b": 1})}], {"a": str}), ([{"a": 1}, {"a": 1.1}], {"a": float}), ([{"a": b"b"}], {"a": bytes}), + ([{"a": b"b"}, {"a": None}], {"a": bytes}), ], ) def test_suggest_column_types(records, types):