From ec145b86dc0e06249c06431280175814a0656c5b Mon Sep 17 00:00:00 2001 From: Ville Brofeldt Date: Fri, 25 Feb 2022 17:40:40 +0200 Subject: [PATCH 1/2] fix(dataset): handle missing database in migration --- .../versions/b8d3a24d9131_new_dataset_models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py b/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py index e6d4537272ff3..dd3f46e96a97d 100644 --- a/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py +++ b/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py @@ -321,10 +321,14 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals # table names database = ( target.database - or session.query(Database).filter_by(id=target.database_id).one() + or session.query(Database).filter_by(id=target.database_id).first() + ) + engine: Optional[Engine] = None + if database: + engine = database.get_sqla_engine(schema=target.schema) + conditional_quote = ( + engine.dialect.identifier_preparer.quote if engine else lambda x: x ) - engine = database.get_sqla_engine(schema=target.schema) - conditional_quote = engine.dialect.identifier_preparer.quote # create columns columns = [] From 0b0b7f9b67a3b90a4697f11c3eb67d3d7bd070bc Mon Sep 17 00:00:00 2001 From: Ville Brofeldt Date: Fri, 25 Feb 2022 19:02:46 +0200 Subject: [PATCH 2/2] return early if database is None --- .../versions/b8d3a24d9131_new_dataset_models.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py b/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py index dd3f46e96a97d..1e139dd6a341d 100644 --- a/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py +++ b/superset/migrations/versions/b8d3a24d9131_new_dataset_models.py @@ -323,12 +323,10 @@ def after_insert(target: SqlaTable) -> None: # pylint: disable=too-many-locals target.database or session.query(Database).filter_by(id=target.database_id).first() ) - engine: Optional[Engine] = None - if database: - engine = database.get_sqla_engine(schema=target.schema) - conditional_quote = ( - engine.dialect.identifier_preparer.quote if engine else lambda x: x - ) + if not database: + return + engine = database.get_sqla_engine(schema=target.schema) + conditional_quote = engine.dialect.identifier_preparer.quote # create columns columns = []