Уже занятая тема, но из того, что я прочитал здесь, следующее помогло мне понять, как она работает внутри:
def bar(a=[]):
print id(a)
a = a + [1]
print id(a)
return a
>>> bar()
4484370232
4484524224
[1]
>>> bar()
4484370232
4484524152
[1]
>>> bar()
4484370232 # Never change, this is 'class property' of the function
4484523720 # Always a new object
[1]
>>> id(bar.func_defaults[0])
4484370232
По умолчанию предоставление дополнительных свойств является действительным:
Ключевое слово AdditionalProperties используется для управления обработкой лишних вещей, то есть свойства, имена которых не указаны в ключевом слове properties. По умолчанию любые дополнительные свойства разрешены.
Ключевое слово AdditionalProperties может быть логическим или объектом. Если AdditionalProperties является логическим значением и имеет значение false, дополнительные свойства не будут разрешены.
Повторное использование приведенного выше примера, но на этот раз для AdditionalProperties задано значение false.
blockquote>Так что попробуйте добавить это к вашему
query_schema
:query_schema = { "type": "object", "properties" : { "pltfrm_nm": {"type" : "string"}, "srvr_nm": {"type": "string"}, "db_nm": {"type": "string"}, "tbl_nm": {"type": "string"}, "ip_addr_id": {"type": "string"}, "usr_id": {"type": "string"}, "sql_txt": {"type": "string"}, "timestmp": {"type": "string"}, }, "additionalProperties": False }