Как заменить '?' в запросе cx_ Oracle с предоставленными значениями - PullRequest
1 голос
/ 14 января 2020
 cur.execute('select* form table where a = '?' and b = '?' and c = '?'', (val1,val2,val3))

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

Ответы [ 2 ]

1 голос
/ 15 января 2020

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])
1 голос
/ 14 января 2020

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

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

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

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