Как поместить маркер параметра в одинарные кавычки для sql параметризованного запроса внутри python - PullRequest
0 голосов
/ 27 января 2020

Я хочу написать sql открытый запрос в python. Обычные sql запросы, которые я писал, были такими:

sql_query = select name from emp where id= %s 

И я выполнял их так: cursor.execute(sql_query, (id_value,))

И это хорошо работает.

Но, сейчас У меня есть openquery что-то вроде:

sql_query = select * from openquery([LS], 'select name from \"DB\"."view" where \"id\" Like %s') 

Если я выполню с: cursor.execute(sql_query, (id_value,))

Я получу сообщение об ошибке:

SQL содержит 0 маркеров параметров, но предоставляется 1 параметр.

Я понимаю, что эта ошибка возникает, поскольку% s задано в одном запросе в кавычках. Но я не могу удалить эти одинарные кавычки, потому что запрос не работает без него на SQL самом сервере.

Я попытался выполнить запрос с:

cursor.execute(sql_query % (id_value))

И это работает. Но я не хочу использовать это, потому что этот формат склонен к внедрению SQL.

Итак, как я могу написать защищенный параметризованный открытый запрос в python.

1 Ответ

0 голосов
/ 27 января 2020

Пожалуйста, удалите лишнюю запятую (",") после в блоке параметров после "id_value":

sql_query = select * from openquery([LS], 'select name from \"DB\"."view" where \"id\" Like %s')    

cursor.execute(sql_query, (id_value))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...