#python #mysql #sql
#python #mysql #sql
Вопрос:
Я использую скрипт Python для обновления нескольких записей в таблице MySQL. Я пытаюсь поместить несколько инструкций обновления в строку и, используя метод execute, получаю синтаксическую ошибку при выполнении скрипта Python.
Это что-то достижимое?
Например.
Query="""UPDATE STATEMENT1;
UPDATE STATEMENT2;"""
conn.execute(Query)
Error :
(pymysql.err.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
Комментарии:
1. Вы не можете выполнить несколько запросов за один вызов. Выполняйте их в отдельных вызовах.
2. Никогда не обрезайте сообщения об ошибках, цитируйте их полностью.
3. Покажите,
STATEMENT
как вы можете объединить в одномSET
вызове.
Ответ №1:
Вы можете обновить несколько строк, правильно используя WHERE
satatation. Одни и те же данные в разных строках.
UPDATE students
SET score1 = 5,
score2 = 8
WHERE id IN (1,2,4,8);
Также ваша форма завершена правильно. Было похоже, что эти:
UPDATE students
SET score1 = 5,
score2 = 8
WHERE id = 1;
UPDATE students
SET score1 = 5,
score2 = 8
WHERE id = 2;
UPDATE students
SET score1 = 5,
score2 = 8
WHERE id = 4;
UPDATE students
SET score1 = 5,
score2 = 8
WHERE id = 8;
Если вы хотите продолжить, используя вторую форму, вам придется выполнить несколько раз. Вы можете использовать разные формы.
Если есть только 2 запроса для обновления, вы можете выполнить эти:
query1 = "UPDATE STATEMENT1;"
conn.execute(query1)
query1 = "UPDATE STATEMENT2;"
conn.execute(query2)
Если вы хотите сделать что-то более сложное или вы не знаете точно количество запросов, которые вам нужно выполнить, вы можете сделать это:
queries = ["UPDATE STATEMENT1;","UPDATE STATEMENT2;","UPDATE STATEMENT3;"]
for i, query in enumerate(queries):
conn.execute(query)
Затем вам нужно только .append()
выполнить запросы к списку запросов.