Py MySql передать запрос в качестве параметра в оператор sql - PullRequest
0 голосов
/ 04 августа 2020

Достаточно хорошо осведомлен о передаче параметров в оператор SELECT с использованием py mysql и python. Просто выбросить это там, но можно ли передать запрос в качестве параметра в оператор sql? Что-то вроде:

sqlCmd = """SELECT * from mytable where coadataid=%s"""
cur.execute(sqlCmd,("""ANY(SELECT recordid FROM coadata WHERE flowtype='1')""",))

Очевидно, что вышеуказанное не будет работать, но я ищу способ заставить что-то подобное работать. Есть идеи?

1 Ответ

0 голосов
/ 04 августа 2020

Параметры всегда подставляются как буквальные значения, а не выражения, которые будут оцениваться с помощью MySQL. Вот как параметры предотвращают внедрение SQL.

Вы можете использовать обычное форматирование строки для замены подзапроса в основной запрос и параметры cursor.execute() для заполнения значений в подзапросе.

cur.execute(sqlCmd % ("""ANY(SELECT recordid FROM coadata WHERE flowtype=%s)""",), ('1',))
...