Необходимо динамически выполнять SQL-запрос - PullRequest
0 голосов
/ 09 июня 2018

Мне нужно обновить имя клиента, используя введенные пользователем данные.исходное_имя должно быть обновлено на новое_имя

cur.execute(''' 
CREATE TABLE customer (customerId int,customerName varchar(20),telephoneNo int,
                    addressId varchar(20), customerType varchar(20),
                    discount int, memCardType varchar(20))''')

Я пытаюсь выполнить этот код, но он выдает ошибку.

    original_name=input("Enter name to be modified: ")
    new_name=input("Enter new name of the customer: ")
    cur.execute("UPDATE customer SET customerName=new_name WHERE  customerName=original_name   ")
    print("Customer name changes successfully.")

Ошибка:

 cur.execute("UPDATE customer SET customerName=new_name WHERE  
customerName=original_name   ")
cx_Oracle.DatabaseError: ORA-00904: "ORIGINAL_NAME": invalid identifier

1 Ответ

0 голосов
/ 09 июня 2018

Полагаю, вы используете курсор SQL, поэтому я бы сделал это так:

original_name=input("Enter name to be modified: ")
new_name=input("Enter new name of the customer: ")
cur.execute("UPDATE customer SET customerName=:new_name WHERE  customerName=:cust_name",{'cust_name': original_name, 'new_name' : new_name})
print("Customer name changes successfully.")

Концепция проста.:new_name и :cust_name являются параметрами привязки, фактически вы сказали своей функции, что добавите этот параметр как переменную, а затем в

{'cust_name': original_name, 'new_name' : new_name}

Вы просто заполните эти параметры привязки своими переменными.

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