Рассмотрим нумерованные параметры, которые поддерживает cxOracle
. Кроме того, не забудьте передать значения параметров во втором аргументе cursor.execute
. Не перезаписывайте сами ваши значения!
И во всех Python DB-API (cxOracle
, ibm_db
, psycopg2
, pyodbc
, et c.) Заполнители параметров не должны цитироваться. Кроме того, в Python обычно избегайте использования %
для интерполяции строк, так как он не выделяется (официально не устарел еще ) . Вместо этого используйте str.format
или F-строки (Python 3,6 +).
SQL_Components = '''
SELECT /*+ FIRST_ROWS materialize */
xxx,
xxx
FROM
xxx
INNER JOIN xxx
INNER JOIN xxx
INNER JOIN xxx
INNER JOIN xxx
WHERE
tpr.tpr_name LIKE 'M39AAA%' AND mml.mml_name IN ({})
'''
# BUILD NUMBERED PLACEDHOLERS WITH enumerate
prms = [":" + str(i+1) for i,_ in enumerate(chosen_lot)]
# INTERPOLATE WITH str.format
Cursor.execute(SQL_Components.format(", ".join(prms)), chosen_lot)