Я использую python sql для редактирования очень простой таблицы с именем students
(столбцы которой name
и age
), как показано ниже:
('Rachel', 22)
('Linckle', 33)
('Bob', 45)
('Amanda', 25)
('Jacob', 85)
('Avi', 65)
('Michelle', 45)
Я определяю функции python для выполнения кода SQL.
В моей первой функции я хочу обновить значения age
в таблице students
, где name
соответствует чему-либо (например, Бобу). Если я определю следующую функцию:
def update_age(age, name):
c.execute("""UPDATE students SET age = %s
WHERE name = %s""", (age, name))
А потом:
update_age(99, 'Bob')
Я получу:
('Rachel', 22)
('Linckle', 33)
('Bob', 99)
('Amanda', 25)
('Jacob', 85)
('Avi', 65)
('Michelle', 45)
Для второй функции я хотел бы указать также имя таблицы со следующим кодом:
def update_age_table(table, age, name):
c.execute("""UPDATE %s SET age = %s
WHERE name = %s""",
(table, age, name)) # note that here I am only replacing students by the placeholder %s
Тогда, если я сделаю:
update_age_table(table='students', age=95, name='Jacob')
Я получу следующее сообщение об ошибке (оно длинное, я только отображаю последнее предложение:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''students' SET age = 95
WHERE name = 'Jacob'' at line 1
Я предполагаю, что ошибка происходит из-за того, что я присваиваю двум заполнителям переменные, а именно age
и name
, что не относится к имени таблицы, где не является присвоением переменной.
Кто-нибудь знает, как я могу использовать заполнители в командах SQL, не назначая их переменным?