Как заменить '?'

 cur.execute('select* form table where a = '?' and b = '?' and c = '?'', (val1,val2,val3))

Я хочу заменить эти заполнители на val1,2,3

Всего 2 ответа


Вы не указываете, какую библиотеку SQL вы используете, но если вы не используете что-то действительно экзотическое, вы должны опустить кавычки вокруг заполнителей:

cur.execute('select * from table where a = ? and b = ? and c = ?', (val1,val2,val3))

Библиотека SQL примет соответствующие меры для получения значений, передаваемых в движок БД!


Oracle не использует '?' в качестве заполнителей для переменных связывания. Он использует имена с префиксом двоеточия, такие как :1 или :empno .

См. Использование переменных связывания в документации по cx_Oracle. Также ознакомьтесь с примерами .

Попробуйте что-то вроде:

cur.execute('select * from table where a = :abv and b = :bbv and c = :cbv', [val1, val2, aval3])

или

cur.execute('select * from table where a = :abv and b = :bbv and c = :cbv', abv = val1, bbv = val2, cbv = val3])

Есть идеи?

10000