@@ -245,11 +245,7 @@ def create_table(
245245 ), "defaults set {} includes items not in columns {}" .format (
246246 repr (set (defaults )), repr (set (columns .keys ()))
247247 )
248- # Validate no columns contain '[' or ']' - #86
249- for column in columns .keys ():
250- assert (
251- "[" not in column and "]" not in column
252- ), "'[' and ']' cannot be used in column names"
248+ validate_column_names (columns .keys ())
253249 column_items = list (columns .items ())
254250 if column_order is not None :
255251 column_items .sort (
@@ -892,6 +888,7 @@ def update(self, pk_values, updates=None, alter=False, conversions=None):
892888 args = []
893889 sets = []
894890 wheres = []
891+ validate_column_names (updates .keys ())
895892 for key , value in updates .items ():
896893 sets .append ("[{}] = {}" .format (key , conversions .get (key , "?" )))
897894 args .append (value )
@@ -1026,8 +1023,8 @@ def insert_all(
10261023 all_columns = list (sorted (all_columns ))
10271024 if hash_id :
10281025 all_columns .insert (0 , hash_id )
1026+ validate_column_names (all_columns )
10291027 first = False
1030-
10311028 # values is the list of insert data that is passed to the
10321029 # .execute() method - but some of them may be replaced by
10331030 # new primary keys if we are extracting any columns.
@@ -1310,3 +1307,11 @@ def resolve_extracts(extracts):
13101307 if isinstance (extracts , (list , tuple )):
13111308 extracts = {item : item for item in extracts }
13121309 return extracts
1310+
1311+
1312+ def validate_column_names (columns ):
1313+ # Validate no columns contain '[' or ']' - #86
1314+ for column in columns :
1315+ assert (
1316+ "[" not in column and "]" not in column
1317+ ), "'[' and ']' cannot be used in column names"
0 commit comments