def test_standalone_sqlalchemy_datasource(test_db_connection_string, sa): datasource = SqlAlchemyDatasource( "SqlAlchemy", connection_string=test_db_connection_string, echo=False, batch_kwargs_generators={ "default": { "class_name": "TableBatchKwargsGenerator" } }, ) assert set( datasource.get_available_data_asset_names()["default"]["names"]) == { ("main.table_1", "table"), ("main.table_2", "table"), } batch_kwargs = datasource.build_batch_kwargs("default", "main.table_1") batch = datasource.get_batch(batch_kwargs=batch_kwargs) assert isinstance(batch, Batch) batch_data = batch.data assert isinstance( batch_data, great_expectations.dataset.sqlalchemy_dataset.SqlAlchemyBatchReference, ) dataset = SqlAlchemyDataset(**batch.data.get_init_kwargs()) assert len(dataset.head(10)) == 5
def test_standalone_sqlalchemy_datasource(test_db_connection_string): datasource = SqlAlchemyDatasource( 'SqlAlchemy', connection_string=test_db_connection_string, echo=False) assert datasource.get_available_data_asset_names() == {"default": {"main.table_1", "main.table_2"}} dataset1 = datasource.get_batch("main.table_1") dataset2 = datasource.get_batch("main.table_2") assert isinstance(dataset1, SqlAlchemyDataset) assert isinstance(dataset2, SqlAlchemyDataset)
def test_query_generator_view(sqlite_view_engine): datasource = SqlAlchemyDatasource( engine=sqlite_view_engine, batch_kwargs_generators={"table": {"class_name": "TableBatchKwargsGenerator"}}, ) # Build a datasource with a queries generator to introspect our database with a view names = set(datasource.get_available_data_asset_names()["table"]["names"]) # We should see both the table *and* the primary view, but *not* the temp view assert names == {("main.test_table", "table"), ("main.test_view", "view")}
def test_query_generator_view(sqlite_view_engine): datasource = SqlAlchemyDatasource( engine=sqlite_view_engine, generators={"query": { "type": "queries" }} ) # Build a datasource with a queries generator to introspect our database with a view names = set(datasource.get_available_data_asset_names()["query"]) # We should see both the table *and* the primary view, but *not* the temp view assert names == {"main.test_table", "main.test_view"}