From ebcd0f4f0b423ba5780770f8429aba56bc756e5e Mon Sep 17 00:00:00 2001 From: Craig Date: Mon, 25 Jan 2021 09:35:42 -0800 Subject: [PATCH 1/2] Adding option to set_database_uri CLI command --- superset/cli.py | 11 +++++++++-- superset/utils/core.py | 12 +++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/superset/cli.py b/superset/cli.py index 557cc9d0efd4..03928406358e 100755 --- a/superset/cli.py +++ b/superset/cli.py @@ -191,9 +191,16 @@ def load_examples( @superset.command() @click.option("--database_name", "-d", help="Database name to change") @click.option("--uri", "-u", help="Database URI to change") -def set_database_uri(database_name: str, uri: str) -> None: +@click.option( + "--always_create", + "-a", + is_flag=True, + default=True, + help="Create the DB if it doesn't exist", +) +def set_database_uri(database_name: str, uri: str, always_create: bool) -> None: """Updates a database connection URI """ - utils.get_or_create_db(database_name, uri) + utils.get_or_create_db(database_name, uri, always_create) @superset.command() diff --git a/superset/utils/core.py b/superset/utils/core.py index 9b1590b5c146..3d525b2db981 100644 --- a/superset/utils/core.py +++ b/superset/utils/core.py @@ -1095,7 +1095,7 @@ def user_label(user: User) -> Optional[str]: def get_or_create_db( - database_name: str, sqlalchemy_uri: str, *args: Any, **kwargs: Any + database_name: str, sqlalchemy_uri: str, always_create: Optional[bool] = True ) -> "Database": from superset import db from superset.models import core as models @@ -1104,13 +1104,15 @@ def get_or_create_db( db.session.query(models.Database).filter_by(database_name=database_name).first() ) - if not database: + if not database and always_create: logger.info("Creating database reference for %s", database_name) - database = models.Database(database_name=database_name, *args, **kwargs) + database = models.Database(database_name=database_name) db.session.add(database) - database.set_sqlalchemy_uri(sqlalchemy_uri) - db.session.commit() + if database: + database.set_sqlalchemy_uri(sqlalchemy_uri) + db.session.commit() + return database From 3613cc05cdba4c5d46a9d83e9f0ae4de9c2f2fcd Mon Sep 17 00:00:00 2001 From: Craig Date: Mon, 25 Jan 2021 10:55:14 -0800 Subject: [PATCH 2/2] Fixing flag logic --- superset/cli.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/superset/cli.py b/superset/cli.py index 03928406358e..56c6f98a67e9 100755 --- a/superset/cli.py +++ b/superset/cli.py @@ -192,15 +192,15 @@ def load_examples( @click.option("--database_name", "-d", help="Database name to change") @click.option("--uri", "-u", help="Database URI to change") @click.option( - "--always_create", - "-a", + "--skip_create", + "-s", is_flag=True, - default=True, + default=False, help="Create the DB if it doesn't exist", ) -def set_database_uri(database_name: str, uri: str, always_create: bool) -> None: +def set_database_uri(database_name: str, uri: str, skip_create: bool) -> None: """Updates a database connection URI """ - utils.get_or_create_db(database_name, uri, always_create) + utils.get_or_create_db(database_name, uri, not skip_create) @superset.command()