Я бы попробовал обходной путь. Получите список полей таблицы как кортеж и список переданных в данных полей, после чего пройдитесь по названиям полей данных, переданных пользователем. Добавьте в список валидных полей только те, что есть в таблице:
columns = list(column.name for column in cls.storing_table.columns)
data_fields = data.dict()
validated_data_fields = []
for data_field in data_fields:
if data_field in columns: # Внутри скрытый for
validated_data_fields.append(data_field)
Попробуйте то же самое решение с применением множеств (внутри тоже два скрытых for'а):
columns = set(list(column.name for column in cls.storing_table.columns))
data_fields = set(data.dict())
validated_fields = list(data_fields.intersection(columns)) # Вот тут скрытые for'ы
Не используйте инструкцию
assert в коде, выполняющемся на Production, потому что интерпретатор Python выбрасывает все строки с этим оператором при построении оптимизированного байт-кода (99,999% случаев на Production).