class_docstr: Handle polling an SQS queue and running Athena queries for updating tables
class_docstr_tok: ["Handle","polling","an","SQS","queue","and","running","Athena","queries","for","updating","tables"]
code: def _create_client(cls, db_name, results_bucket):
      if cls._ATHENA_CLIENT:
          return  # Client already created/cached
  
      cls._ATHENA_CLIENT = AthenaClient(
          db_name, results_bucket, cls.ATHENA_S3_PREFIX
      )
  
      # Check if the database exists when the client is created
      if not cls._ATHENA_CLIENT.check_database_exists():
          raise AthenaPartitionerError(
              "The '{}' database does not exist".format(db_name)
          )
  
imports: from collections import defaultdict
  import json
  import posixpath
  import re
  import urllib.request
  import urllib.parse
  import urllib.error
  from streamalert.shared.utils import get_database_name, get_data_file_format
  from streamalert.shared.athena import AthenaClient
  from streamalert.shared.config import athena_partition_buckets, load_config
  from streamalert.shared.exceptions import ConfigError
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 2 for calling the AthenaPartitioner obj's underlying member method code with example usage: obj._create_client(cls, db_name, results_bucket) without return types