Санация Python SQL БЕЗ поддержки драйверов - PullRequest
1 голос
/ 03 марта 2011

Есть ли способ правильно санировать входные данные 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 Ответ

0 голосов
/ 14 декабря 2012

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

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

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

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

...