2013-03-17 2 views
4

레코드가 이미 존재하는 경우 행을 업데이트해야하며 그렇지 않으면 새 레코드를 작성해야합니다. DUPLICATE KEY에 대한 언더넌트는 MYSQLdb를 사용하여 이것을 수행 할 것이지만, 작동 시키는데 문제가 있습니다.MySQL 파이썬 업데이트 또는 삽입

 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() 

기본 키는 괄호에는 missiing 된

+0

, 사용을 고려' –

+0

는 primay (또는 고유) 테이블의 핵심은 무엇입니까 sqlalchemy'? –

+0

테이블의 열은 무엇입니까? 당신은'round'와'roun_id'를 가지고있는 것 같습니다. 그건 오타입니까? 아니면이 두 열입니까? –

답변

14

을 USER_ID되어 아래에 내 코드입니다. 또한 명령문의 ON DUPLICATE KEY UPDATE 섹션에서 VALUES(column)를 사용할 수 있습니다 일반적으로

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

고마워, 나는 그것이 단순한 것이라고 생각했다! 한 가지 더 질문, 당신은 대답에 여러 줄에 문장을 입력 할 수 있는지, 그렇지 않으면 내가 아주 긴 줄의 코드를 얻을 수 있는지 안다. 나는 이클립스를 사용한다 .. – DavidJB

+0

@john 편집을 참조하십시오. [Python strings] (http://docs.python.org/2/tutorial/introduction.html#strings)에 대한 내용을 읽어보십시오. –

관련 문제