code: def gen_columns_from_children(root):
      
      if isinstance(root, (Delete, BinaryExpression, BooleanClauseList)):
          for child in root.get_children():
              yc = gen_columns_from_children(child)
              for it in yc:
                  yield it
      elif isinstance(root, sa.Column):
          yield root
docs: Generates columns that are being used in child elements of the delete query
      this will be used to determine tables for the using clause.
      :param root: the delete query
      :return: a generator of columns