构建数据管道
使用工厂方法不仅让代码更易读,也更易用。这个练习中,您将练习创建一个从数据库提取数据的数据管道。DataPipeline 类实现了工厂方法设计模式,代码如下。同时还为您定义了 Database 类的两个具体产品:Postgres 和 Redshift。
class DataPipeline:
def _get_database(self, provider):
if provider == "Postgres":
return Postgres()
elif provider == "Redshift":
return Redshift()
def extract_data(self, provider, query):
database = self._get_database(provider)
dataset = database.query_data(query)
print(f"Extracted dataset from {provider} database")
return dataset
本练习是课程的一部分
Python 面向对象编程进阶
练习说明
- 使用
DataPipeline类创建一个items_pipeline,并以查询SELECT * FROM items;从"Redshift"数据库中提取数据集。 - 将
items_pipeline更新为改从"Postgres"数据库拉取数据,查询与之前相同。 - 创建一个
etl_pipeline,用于从"Redshift"提取数据。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Create an ETL DataPipeline, query using Redshift
items_pipeline = ____()
____.extract_data("____", "SELECT * FROM items;")
# Now, switch the pipeline to Postgres
____
# Finally, create an etl_pipeline with Redshift
____ = ____()
____.____("____", "SELECT * FROM sales;")