Санация Python SQL БЕЗ поддержки драйверов

Есть ли способ правильно санировать входные данные SQL, прежде чем передавать их в команду cursor.execute в python? Я знаю, что вы должны быть в состоянии создать конструкцию, подобную следующей:

cursor.execute("insert into Attendees values (?, ?, ?)", (name, seminar, paid) )

чтобы сделать это правильно, но он не работает с моим драйвером ODBC (4D V11) и pyodbc.

Чтобы быть более конкретным, я пытаюсь написать оператор INSERT, используя вышеуказанный формат. Когда я запускаю код, вставляется запись, но в результирующей записи заполняются только числовые переменные - строки пустые. Если я переключу драйверы ODBC (и базы данных, очевидно) на pqodbc и базу данных Postgresql, настроенную одинаково (по крайней мере, для полей, которые я пытаюсь вставить), тот же код работает отлично. Это означало бы, что проблема в драйвере 4D, а не в Python. Тем не менее, вряд ли драйвер 4D будет исправлен в ближайшее время, поэтому я ищу другие обходные пути. Какие-либо предложения? Спасибо

1 ответ

К сожалению, поскольку существует множество SQL-подобных диалектов, нет единого способа добиться дезинфекции. Вот почему хороший водитель должен экспортировать санитарные средства.

В Python есть хороший набор функций для обработки строк, поэтому довольно легко исправить ваш конкретный случай, как это предусмотрено вашими комментариями к вопросу.

Хорошая вещь, которую вы могли бы сделать при реализации этого, это посмотреть на экранирующую систему некоторых драйверов: она может содержать полезный трюк;-)

Счастливого взлома!

Другие вопросы по тегам