mirror of https://github.com/apache/superset.git
Update databend engine spec
* For use with databend dialect version >= 0.4.6
This commit is contained in:
parent
1c48fe05fd
commit
9dda5638f1
|
@ -394,7 +394,7 @@ crate://crate@127.0.0.1:4200
|
|||
#### Databend
|
||||
|
||||
The recommended connector library for Databend is [databend-sqlalchemy](https://pypi.org/project/databend-sqlalchemy/).
|
||||
Superset has been tested on `databend-sqlalchemy>=0.2.3`.
|
||||
Superset has been tested on `databend-sqlalchemy>=0.4.6`.
|
||||
|
||||
The recommended connection string is:
|
||||
|
||||
|
@ -405,7 +405,7 @@ databend://{username}:{password}@{host}:{port}/{database_name}
|
|||
Here's a connection string example of Superset connecting to a Databend database:
|
||||
|
||||
```
|
||||
databend://user:password@localhost:8000/default?secure=false
|
||||
databend://user:password@localhost:8000/default?sslmode=disable
|
||||
```
|
||||
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ clickhouse = ["clickhouse-connect>=0.5.14, <1.0"]
|
|||
cockroachdb = ["cockroachdb>=0.3.5, <0.4"]
|
||||
cors = ["flask-cors>=2.0.0"]
|
||||
crate = ["crate[sqlalchemy]>=0.26.0, <0.27"]
|
||||
databend = ["databend-sqlalchemy>=0.3.2, <1.0"]
|
||||
databend = ["databend-sqlalchemy>=0.4.6, <1.0"]
|
||||
databricks = [
|
||||
"databricks-sql-connector>=2.0.2, <3",
|
||||
"sqlalchemy-databricks>=0.2.0",
|
||||
|
|
|
@ -217,10 +217,11 @@ class DatabendConnectEngineSpec(BasicParametersMixin, DatabendEngineSpec):
|
|||
_function_names: list[str] = []
|
||||
|
||||
sqlalchemy_uri_placeholder = (
|
||||
"databend://user:password@host[:port][/dbname][?secure=value&=value...]"
|
||||
"databend://user:password@host[:port][/dbname][?sslmode=value&=value...]"
|
||||
)
|
||||
parameters_schema = DatabendParametersSchema()
|
||||
encryption_parameters = {"secure": "true"}
|
||||
encryption_parameters = {"sslmode": "require"}
|
||||
encryption_disable_parameters = {"sslmode": "disable"}
|
||||
|
||||
@classmethod
|
||||
def get_dbapi_exception_mapping(cls) -> dict[type[Exception], type[Exception]]:
|
||||
|
@ -258,9 +259,11 @@ class DatabendConnectEngineSpec(BasicParametersMixin, DatabendEngineSpec):
|
|||
cls, parameters: BasicParametersType, *_args: dict[str, str] | None
|
||||
) -> str:
|
||||
url_params = parameters.copy()
|
||||
if url_params.get("encryption"):
|
||||
query = parameters.get("query", {}).copy()
|
||||
if url_params.get("encryption"):
|
||||
query.update(cls.encryption_parameters)
|
||||
else:
|
||||
query.update(cls.encryption_disable_parameters)
|
||||
url_params["query"] = query
|
||||
if not url_params.get("database"):
|
||||
url_params["database"] = "__default__"
|
||||
|
@ -273,7 +276,10 @@ class DatabendConnectEngineSpec(BasicParametersMixin, DatabendEngineSpec):
|
|||
) -> BasicParametersType:
|
||||
url = make_url_safe(uri)
|
||||
query = url.query
|
||||
if "secure" in query:
|
||||
if "sslmode" in query:
|
||||
encryption = url.query.get("sslmode") == "require"
|
||||
query.pop("sslmode")
|
||||
elif "secure" in query:
|
||||
encryption = url.query.get("secure") == "true"
|
||||
query.pop("secure")
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue