2013-03-17 2 views
4

Мне нужно обновить строку, если запись уже существует или создать новую, если она не установлена. Я разочарован в DUPLICATE KEY, выполнит это с помощью MYSQLdb, однако у меня возникают проблемы с его работой. Мой код нижеUPDATE или INSERT MySQL Python

 cursor = database.cursor() 
     cursor.execute("INSERT INTO userfan (user_id, number, round VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE user_id =%s, number=%s, round=%s", (user_id, number, round)) 
     database.commit() 

первичный ключ user_id

+0

В общем, рекомендуется использовать 'sqlalchemy' –

+0

Что такое primay (или единственный) ключ таблицы? –

+0

А каковы столбцы таблицы? Кажется, у вас есть «round» и «roun_id». Это опечатка или эти 2 столбца? –

ответ

14

скобка была missiing. Вы можете также использовать VALUES(column) в ON DUPLICATE KEY UPDATE разделе заявления:

cursor = database.cursor() 
    cursor.execute(""" 
     INSERT INTO userfan 
      (user_id, number, round) 
     VALUES 
      (%s, %s, %s) 
     ON DUPLICATE KEY UPDATE 
              -- no need to update the PK 
      number = VALUES(number), 
      round = VALUES(round) ; 
        """, (user_id, number, round)  # python variables 
       ) 
    database.commit() 
+0

Спасибо, я подумал, что это просто! Еще один вопрос, знаете ли вы, если можно ввести оператор на несколько строк, как у вас в вашем ответе, иначе я получаю очень длинные строки кода. Я использую eclipse .. – DavidJB

+0

@john См. Редактирование. Прочитайте это о [Строках Python] (http://docs.python.org/2/tutorial/introduction.html#strings) –

Смежные вопросы