class_docstr: A `Composable` representing a placeholder for query parameters.
  
  If the name is specified, generate a named placeholder (e.g. ``%(name)s``),
  otherwise generate a positional placeholder (e.g. ``%s``).
  
  The object is useful to generate SQL queries with a variable number of
  arguments.
  
  Examples::
  
      >>> names = ['foo', 'bar', 'baz']
  
      >>> q1 = sql.SQL("insert into table ({}) values ({})").format(
      ...     sql.SQL(', ').join(map(sql.Identifier, names)),
      ...     sql.SQL(', ').join(sql.Placeholder() * len(names)))
      >>> print(q1.as_string(conn))
      insert into table ("foo", "bar", "baz") values (%s, %s, %s)
  
      >>> q2 = sql.SQL("insert into table ({}) values ({})").format(
      ...     sql.SQL(', ').join(map(sql.Identifier, names)),
      ...     sql.SQL(', ').join(map(sql.Placeholder, names)))
      >>> print(q2.as_string(conn))
      insert into table ("foo", "bar", "baz") values (%(foo)s, %(bar)s, %(baz)s)
code: def as_string(self, context):
      if self._wrapped is not None:
          return f"%({self._wrapped})s"
      else:
          return "%s"
  
imports: import string
  from psycopg2 import extensions
label_desc: Use image node_id 4 for calling the Placeholder obj's underlying member method code with example usage: obj.as_string(context) and returns: str, self, str, str