code: def expr_to_str(n, l=None):
      
      op = n[0]
      if op.startswith('_') and op.endswith('_'):
          op = op.strip('_')
          if op == 'var':
              return n[1]
          elif op == 'literal':
              if isinstance(n[1], basestring):
                  return "'%s'" % n[1]
              return str(n[1])
          elif op == 'cast':
              return "(%s)::%s" % (expr_to_str(n[1]), n[2])
      elif op in '+-*/':
          return "(%s) %s (%s)" % (expr_to_str(n[1]), op, expr_to_str(n[2]))
      elif op == "extract":
          return "extract( %s from %s )" % (n[1], expr_to_str(n[2]))
      else:
          arg = ','.join(map(expr_to_str, n[1:]))
          return "%s(%s)" % (op, arg)
docs: construct SQL string from expression node