Это в основном комбинация решений этого вопроса. Вы не можете использовать имя таблицы привязки, но это можно сделать с помощью форматирования строки, что увеличивает риск SQL-инъекции . Во избежание использования пакета DBMS_ASSERT oracle, который имеет функции это может вызвать исключение, если это не допустимый объект базы данных (dbms_assert.sql_object_name
), который вам, возможно, придется обработать.
Предполагая, что вы используете cx_Oracle,
cur = conn.cursor()
my_tabname = cur.callfunc('sys.dbms_assert.sql_object_name'
, cx_Oracle.STRING, ['employees'])
cur.execute("SELECT * from {tablename}".format(tablename=my_tabname))
for line in cur:
print(line)