Я пытаюсь понять, как работает привязка при использовании %(variable)s
%(variable)s
В моем случае мой запрос: engine.execute("DELETE FROM testing WHERE test_id in %(ids)s, ids=tuple([1,2,3])))
engine.execute("DELETE FROM testing WHERE test_id in %(ids)s, ids=tuple([1,2,3])))
Если я удалю (ids), оставив только %s, тогда я получаю not all arguments converted during string formatting
(ids)
%s
not all arguments converted during string formatting
Почему это?
пара способов использования 'именованного параметра'. один из них использует словарь
engine.execute("SELECT * FROM testing WHERE test_id = %(ids)s, {"ids": ids_value,})
Вы можете упростить это и использовать
engine.execute("DELETE FROM testing WHERE test_id IN (%s, %s, %s)", [value1, value2, value3])
, и вы можете заменить value1, value2, value3 своими значениями. %s для строк и %d для целых чисел
value1
value2
value3
%d