def test_get_or_create_db(self): get_or_create_db("test_db", "sqlite:///superset.db") database = db.session.query(Database).filter_by(database_name="test_db").one() self.assertIsNotNone(database) self.assertEqual(database.sqlalchemy_uri, "sqlite:///superset.db") self.assertIsNotNone( security_manager.find_permission_view_menu("database_access", database.perm) ) # Test change URI get_or_create_db("test_db", "sqlite:///changed.db") database = db.session.query(Database).filter_by(database_name="test_db").one() self.assertEqual(database.sqlalchemy_uri, "sqlite:///changed.db") db.session.delete(database) db.session.commit()
def test_import_csv_explore_database(self): if utils.get_example_database().backend == "sqlite": # sqlite doesn't support schema / database creation return explore_db_id = utils.get_example_database().id upload_db = utils.get_or_create_db( "csv_explore_db", app.config["SQLALCHEMY_DATABASE_URI"]) upload_db_id = upload_db.id extra = upload_db.get_extra() extra["explore_database_id"] = explore_db_id upload_db.extra = json.dumps(extra) db.session.commit() self.login(username="******") self.enable_csv_upload(DatasetDAO.get_database_by_id(upload_db_id)) table_name = "".join( random.choice(string.ascii_uppercase) for _ in range(5)) f = "testCSV.csv" self.create_sample_csvfile(f, ["a,b", "john,1", "paul,2"]) # initial upload with fail mode resp = self.upload_csv(f, table_name) self.assertIn(f'CSV file "{f}" uploaded to table "{table_name}"', resp) table = self.get_table_by_name(table_name) self.assertEqual(table.database_id, explore_db_id) # cleanup db.session.delete(table) db.session.delete(DatasetDAO.get_database_by_id(upload_db_id)) db.session.commit() os.remove(f)
def setup_csv_upload(): with app.app_context(): login(test_client, username="******") upload_db = utils.get_or_create_db( CSV_UPLOAD_DATABASE, app.config["SQLALCHEMY_EXAMPLES_URI"]) extra = upload_db.get_extra() extra["explore_database_id"] = utils.get_example_database().id upload_db.extra = json.dumps(extra) upload_db.allow_csv_upload = True db.session.commit() yield upload_db = get_upload_db() engine = upload_db.get_sqla_engine() engine.execute(f"DROP TABLE IF EXISTS {EXCEL_UPLOAD_TABLE}") engine.execute(f"DROP TABLE IF EXISTS {CSV_UPLOAD_TABLE}") engine.execute(f"DROP TABLE IF EXISTS {CSV_UPLOAD_TABLE_W_SCHEMA}") engine.execute(f"DROP TABLE IF EXISTS {CSV_UPLOAD_TABLE_W_EXPLORE}") db.session.delete(upload_db) db.session.commit()
def test_get_or_create_db_invalid_uri(self): with self.assertRaises(ArgumentError): get_or_create_db("test_db", "yoursql:superset.db/()")
def set_database_uri(database_name: str, uri: str) -> None: """Updates a database connection URI """ utils.get_or_create_db(database_name, uri)
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, not skip_create)
def setUp(self) -> None: self.login(username="******") self._test_db_id = get_or_create_db( "column_test_db", app.config["SQLALCHEMY_DATABASE_URI"]).id self._old_sqla_table_mutator = app.config["SQLA_TABLE_MUTATOR"]