Я выполняю такой запрос:
insert into mytable (id, col1, col2)
values (:ID, :COL1, :COL2)
В Python словарь этой формы может использоваться вместе с запросом выше для подстановки параметров:
d = { 'ID' : 0, 'COL1' : 'hi', 'COL2' : 'there' }
cursor.execute(sql_insert, d)
Но в реальной проблеме много столбцов и много строк. Иногда источник данных, который заполняет словарь, не имеет записи. Однако, если словарь короткий, Sqlite будет жаловаться на то, что было предоставлено неверное число привязок, вместо того, чтобы дать мне возможность добавлять пустые строки или NULL в столбцы, которые не заполнены в этом случае.
Я ленивый или немного перфекционист. Я мог бы написать код, чтобы добавить пропущенные поля в словарь. Я просто ищу элегантное решение, которое не требует дублирования списка полей.
Я попытался перегрузить словарь измененным словарем, который возвращает пустую строку, если поле отсутствует.