I guess this could be cooler. Something along these lines:

snippet db
debug("${2}`!p snip.rv = echo_vals(t)`" % (${1}))
endsnippet



with 

def echo_vals(t, placeholder="%r", itemsep = ", "):
   cnt = defaultdict(int)
   vals = []
   cw = ""
   t = t[1].replace("  ", ",")
   for c in t:
      if c == ',' and sum(cnt.values()) == 0:
         cw = cw.strip()
         if cw:
            vals.append(cw)
         cw = ""
      else:
         if c in '([{':
            cnt[c] += 1
         elif c in ')]}':
            cnt[c] -= 1
         cw += c
   vals.append(cw.strip())
   vals = filter(lambda a: a.strip(), vals)

   return itemsep.join("%s: %s" % (a, placeholder) for a in vals)


your call if you want to try that.