Exemple #1
0
 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/()")
Exemple #5
0
def set_database_uri(database_name: str, uri: str) -> None:
    """Updates a database connection URI """
    utils.get_or_create_db(database_name, uri)
Exemple #6
0
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)
Exemple #7
0
 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"]