python sqlite3 - Почему маркеры параметров не работают для столбцов? - PullRequest
0 голосов
/ 07 апреля 2020

Будучи истекающим кровью python и начинающим sqlite, сталкиваюсь с чрезвычайно странным поведением, когда пытаюсь заменить имя столбца на переменную, например, так:

c.execute('SELECT ? FROM table', ("columnA",))

просто привел меня в бешенство goose Погоня, пока я наконец не понял, что вы можете использовать маркеры параметров только для замены имен значений ... а не имен столбцов.

Теперь, конечно, мне интересно, почему это так и если:

c.execute("SELECT %s FROM table" % (data))

действительно является лучшим способом go об этом - что со всей ерундой sqlinjection и так далее.

Любой вклад будет высоко ценится.

Спасибо!

1 Ответ

0 голосов
/ 08 апреля 2020

Таблица и имена столбцов должны быть известны при компиляции оператора; они не могут быть параметрами. Второй приведенный выше фрагмент кода работает, так как в нем выполняется подстановка строки перед вызовом функции execute.

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