code: def get_default_connector(
      auppath=DEFAULT_AUPTIMIZER_PATH, log=logger
  ):
      """Get default connector based on .env
  
      :param auppath: aup environment folder, contains `env.ini` file
      :param log: logger obj to trace where the function is called, default is aup.utils
      :type log: logging.Logger
      :return: Database connector
      :rtype: :mod:`aup.ET.Connector.AbstractConnector`
      """
      config = load_default_env(auppath=auppath)
      log.debug(config)
      if "SQL_ENGINE" not in config:
          raise KeyError("No SQL setup for SQL_ENGINE in %s" % auppath)
      elif config["SQL_ENGINE"] == "sqlite":
          from .ET.Connector.SQLiteConnector import SQLiteConnector
  
          if "SQLITE_FILE" not in config:
              raise KeyError(
                  "SQLITE_FILE is missing in %s for sqlite setup"
                  % auppath
              )
          logger.info(
              "Use default connector at %s" % config["SQLITE_FILE"]
          )
          return SQLiteConnector(path.expanduser(config["SQLITE_FILE"]))
      else:
          raise KeyError(
              "SQL setup for %s is not supported"
              % config["SQLITE_FILE"]
          )
  
imports: from __future__ import print_function
  import sys
  import logging
  import os
  from os import path
  from six.moves import input
  from six.moves.configparser import ConfigParser
  import paramiko
  from paramiko import SFTPClient
  from .aup import BasicConfig, print_result
label_desc: Use image node_id 2 for calling a global function with example usage: get_default_connector(auppath, log) and returns: SQLiteConnector