Как создать шаблон sql с python и решить проблему с композицией sql? - PullRequest
0 голосов
/ 15 марта 2020

Мне нужно отформатировать запрос SQL, и он выглядит следующим образом:

s += " t{}.{} = '{}' and".format(t_c, filter_c, filter_value)

, но когда filter_value что-то вроде m's это приведет к

psycopg2.errors.SyntaxError: syntax error

, если я использую двойную кавычку, он скажет, что такого столбца нет

Любой Как я могу решить эту проблему, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

попробуйте это:

def format_value( string ):
    if '\'' in string:
        k           = string.split('\'')
        string_list = list(map(lambda x: '\'' + x+ '\'', k ))
        return  ''.join(string_list )
    else:
        return string 

, затем

filter_value = format_value(filter_value)

, прежде чем передать filter_value на ваш запрос

0 голосов
/ 15 марта 2020

Вызвана уязвимостью для инъекций. Используйте параметры для filter_value и позвольте API базы данных обрабатывать его.

Если имена таблиц / схем поступают из пользовательского ввода, внесите их в белый список. Параметры для имен таблиц невозможны).

...