From c9f6b4ad9791a06ad359dc7dd755187c24656cae Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Sun, 28 Aug 2022 12:23:49 -0500 Subject: [PATCH] Fix engine validation --- superset/databases/schemas.py | 20 ++++++++++---------- superset/models/core.py | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/superset/databases/schemas.py b/superset/databases/schemas.py index cbd8893c227a0..b6a0ab6983064 100644 --- a/superset/databases/schemas.py +++ b/superset/databases/schemas.py @@ -150,7 +150,7 @@ def sqlalchemy_uri_validator(value: str) -> str: [ _( "Invalid connection string, a valid string usually follows: " - "driver://user:password@database-host/database-name" + "backend+driver://user:password@database-host/database-name" ) ] ) from ex @@ -263,19 +263,19 @@ def build_sqlalchemy_uri( or parameters.pop("engine", None) or data.pop("backend", None) ) - if not engine: - raise ValidationError( - [ - _( - "An engine must be specified when passing " - "individual parameters to a database." - ) - ] - ) driver = data.pop("driver", None) configuration_method = data.get("configuration_method") if configuration_method == ConfigurationMethod.DYNAMIC_FORM: + if not engine: + raise ValidationError( + [ + _( + "An engine must be specified when passing " + "individual parameters to a database." + ) + ] + ) engine_spec = get_engine_spec(engine, driver) if not hasattr(engine_spec, "build_sqlalchemy_uri") or not hasattr( diff --git a/superset/models/core.py b/superset/models/core.py index d131fe9e17e88..ec7ec793212c1 100755 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -646,7 +646,7 @@ def get_db_engine_spec(cls, url: URL) -> Type[db_engine_specs.BaseEngineSpec]: driver = url.get_driver_name() except NoSuchModuleError: # can't load the driver, fallback for backwards compatibility - return db_engine_specs.BaseEngineSpec + driver = None return db_engine_specs.get_engine_spec(backend, driver)