diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index e781e2a..2078525 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -245,6 +245,11 @@ class Database: ), "defaults set {} includes items not in columns {}".format( repr(set(defaults)), repr(set(columns.keys())) ) + # Validate no columns contain '[' or ']' - #86 + for column in columns.keys(): + assert ( + "[" not in column and "]" not in column + ), "'[' and ']' cannot be used in column names" column_items = list(columns.items()) if column_order is not None: column_items.sort( diff --git a/tests/test_create.py b/tests/test_create.py index 7f22ded..6ad54d0 100644 --- a/tests/test_create.py +++ b/tests/test_create.py @@ -77,6 +77,11 @@ def test_create_table_with_bad_defaults(fresh_db): ) +def test_create_table_with_invalid_column_charactters(fresh_db): + with pytest.raises(AssertionError): + fresh_db.create_table("players", {"name[foo]": str}) + + def test_create_table_with_defaults(fresh_db): table = fresh_db.create_table( "players",