def test_old_metadata_is_replaced(arg, sqlite_client_and_tmp_dir): client, tmp = sqlite_client_and_tmp_dir schema, name, _ = arg product = SQLiteRelation(arg, client=client) product.render({}) product.save_metadata({ 'timestamp': datetime.now().timestamp(), 'stored_source_code': 'some code' }) product.save_metadata({ 'timestamp': datetime.now().timestamp(), 'stored_source_code': 'some code' }) query = "SELECT COUNT(*) FROM _metadata WHERE name='{}'".format(name) if schema is not None: query += " AND schema='{}'".format(schema) result = list(client.engine.execute(query))[0][0] assert result == 1
def test_sqlite_product_fetch_metadata_none_if_not_exists(tmp_directory): tmp = Path(tmp_directory) conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db")) numbers = SQLiteRelation((None, 'numbers', 'table'), conn) numbers.render({}) assert numbers.fetch_metadata() is None
def test_sqlite_product_fetch_metadata_none_if_empty_metadata(tmp_directory): tmp = Path(tmp_directory) conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db")) df = pd.DataFrame({'a': np.arange(0, 100), 'b': np.arange(100, 200)}) df.to_sql('numbers', conn.engine) numbers = SQLiteRelation((None, 'numbers', 'table'), conn) numbers.render({}) assert numbers.fetch_metadata() is None
def test_sqlite_product_save_metadata(tmp_directory): tmp = Path(tmp_directory) conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db")) numbers = SQLiteRelation((None, 'numbers', 'table'), conn) numbers.render({}) numbers.metadata['timestamp'] = datetime.now().timestamp() numbers.metadata['stored_source_code'] = 'some code' numbers.save_metadata() fetched = numbers.fetch_metadata() assert fetched == numbers.metadata
def test_sqlite_product_delete(tmp_directory): """ >>> import tempfile >>> tmp_directory = tempfile.mkdtemp() """ tmp = Path(tmp_directory) conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db")) df = pd.DataFrame({'a': np.arange(0, 100), 'b': np.arange(100, 200)}) df.to_sql('numbers', conn.engine) numbers = SQLiteRelation((None, 'numbers', 'table'), conn) numbers.render({}) numbers.delete() assert not numbers.exists()