Привязать переменные для Oracle выберите Query в Python

Я пытаюсь выполнить оператор select для базы данных Oracle. В моем операторе select вместо прямого указания имени таблицы мне нужно получить его из флажка и указать в запросе. Пробовал какой-то код, но получил ошибку... Пожалуйста, найдите мой код ниже

if self.checkbox.isChecked():
    Text = self.checkbox.text
     self.cur.execute(“select * from :tblmn”,(text))
     print(cur)

Соединение и курсор уже определены, но не указаны в приведенном выше коде. Пожалуйста, помогите мне в решении этого. Спасибо


person Shri    schedule 16.04.2019    source источник
comment
Возможный дубликат Привязка переменной к имени таблицы с помощью cx_Oracle   -  person shmee    schedule 16.04.2019


Ответы (1)


В основном это комбинация решений для этот вопрос. Вы не можете использовать имя таблицы привязки, но это можно сделать с помощью форматирования строки, что увеличивает риск инъекций SQL. Чтобы избежать этого, вы можете использовать DBMS_ASSERT, в котором есть функции, которые могут генерировать исключение, если это недопустимый объект базы данных (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)
person Kaushik Nayak    schedule 16.04.2019