Вы не указываете, какую библиотеку 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])