class_docstr: Engine spec for databend sqlalchemy connector
code: def build_sqlalchemy_uri(
      cls,
      parameters: BasicParametersType,
      *_args: dict[str, str] | None,
  ) -> str:
      url_params = parameters.copy()
      if url_params.get("encryption"):
          query = parameters.get("query", {}).copy()
          query.update(cls.encryption_parameters)
          url_params["query"] = query
      if not url_params.get("database"):
          url_params["database"] = "__default__"
      url_params.pop("encryption", None)
      return str(URL(f"{cls.engine}", **url_params))
  
imports: from __future__ import annotations
  import logging
  import re
  from datetime import datetime
  from typing import Any, cast, TYPE_CHECKING
  from flask_babel import gettext
  from marshmallow import fields, Schema
  from marshmallow.validate import Range
  from sqlalchemy import types
  from sqlalchemy.engine.url import URL
  from urllib3.exceptions import NewConnectionError
  from superset.constants import TimeGrain
  from superset.databases.utils import make_url_safe
  from superset.db_engine_specs.base import BaseEngineSpec, BasicParametersMixin, BasicParametersType, BasicPropertiesType
  from superset.db_engine_specs.exceptions import SupersetDBAPIDatabaseError
  from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
  from superset.utils.core import GenericDataType
  from superset.utils.hashing import md5_sha_from_str
  from superset.utils.network import is_hostname_valid, is_port_open
label_desc: Use image node_id 5 for calling the DatabendConnectEngineSpec obj's underlying member method code with example usage: obj.build_sqlalchemy_uri(cls, parameters) and returns: str