class_docstr: This handler handles connection and execution of the Weaviate statements.
class_docstr_tok: ["This","handler","handles","connection","and","execution","of","the","Weaviate","statements","."]
code: def get_columns(self, table_name: str) -> HandlerResponse:
      table_name = table_name.capitalize()
      # check if table exists
      try:
          table = self._client.schema.get(table_name)
      except ValueError:
          return Response(
              resp_type=RESPONSE_TYPE.ERROR,
              error_message=f"Table {table_name} does not exist!",
          )
      data = pd.DataFrame(
          data=[
              {
                  "COLUMN_NAME": column["name"],
                  "DATA_TYPE": column["dataType"][0],
              }
              for column in table["properties"]
          ]
      )
      return Response(data_frame=data, resp_type=RESPONSE_TYPE.OK)
  
imports: from collections import OrderedDict
  from datetime import datetime
  from typing import List, Optional
  import weaviate
  from weaviate.embedded import EmbeddedOptions
  import pandas
  from mindsdb.integrations.libs.const import HANDLER_CONNECTION_ARG_TYPE
  from mindsdb.integrations.libs.response import RESPONSE_TYPE
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerResponse
  from mindsdb.integrations.libs.response import HandlerStatusResponse
  from mindsdb.integrations.libs.vectordatabase_handler import FilterCondition, FilterOperator, TableField, VectorStoreHandler
  from mindsdb.utilities import log
  from weaviate.util import generate_uuid5
label_desc: Use image node_id 17 for calling the WeaviateDBHandler obj's underlying member method code with example usage: obj.get_columns(table_name) and returns: Response, Response