code: def insert_or_update(cursor, table, commit=True, **field_values):
      
  
      q = """INSERT INTO %s ({0}) \nVALUES ({1}) \nON DUPLICATE KEY UPDATE {2} """ % table
      l = len(field_values)
  
      fields = field_values.keys()
      field = ','.join(fields)
      value = ','.join(['%s'] * l)
      kv = ','.join(['{}=%s'.format(f) for f in fields])
  
      q = q.format(field, value, kv)
      args = field_values.values() * 2
  
      cursor.execute(q, args=args)
      if commit:
          cursor.connection.commit()
docs: db update 쿼리 빌딩 및 실행, 단, commit은
      :param cursor: 커서
      :type cursor: Cursor
      :param table: 테이블이름
      :type table: str
      :param commit: 커밋 여부
      :type commit: bool
      :param field_values: insert 또는 업데이트 할 필드 및 값 dict pairs
      :type field_values:dict
      :return: