原标题:以5个数据库为例,用Python实现数据的提取、转换和加载(ETL)
导读:每个数据科学专业人员都必须从不同的数据源中提取、转换和加载(Extract-Transform-Load,ETL)数据。
本文将讨论如何使用Python为选定的流行数据库实现数据的ETL。对于关系数据库,选择MySQL,并将Elasticsearch作为文档数据库的例子展开。对于图形数据库,选择Neo4j。对于NoSQL,可参考此前文章中介绍的MongoDB。
作者:萨扬·穆霍帕迪亚(Sayan Mukhopadhyay)
如需转载请联系大数据(ID:hzdashuju)
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上(从数学角度叫做图)而不是表中,是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎。
01 MySQL
MySQLdb是在MySQL C接口上面开发的Python API。
1. 如何安装MySQLdb
首先,需要在计算机上安装Python MySQLdb模块。然后运行以下脚本:
#!/usr/bin/python
importMySQLdb
如果出现导入错误,则表示模块未正确安装。
以下是安装MySQL Python模块的说明:
$gunzip MySQL-python -1.2.2.tar.gz
$tar –xvf MySQL-python -1.2.2.tar
$cd MySQL-python -1.2.2
$python setup.py build
$python setup.py install
2. 数据库连接
在连接到MySQL数据库之前,请确保有以下内容。
有一个名为TEST的数据库。
在TEST数据库中有一个表STUDENT。
STUDENT表有三个字段:NAME、SUR_NAME和ROLL_NO。
用户对TEST数据库具有完全访问权限。
3. INSERT操作
以下代码执行SQL INSERT语句,以便在STUDENT表中创建记录:
#!/usr/bin/python
importMySQLdb
# Open database connection
db = MySQLdb.connect( "localhost", "user", "passwd", "TEST")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = """INSERT INTO STUDENT(NAME,
SUR_NAME, ROLL_NO)
VALUES ('Sayan', 'Mukhopadhyay', 1)"""
try:
# Execute the SQL command
cursor.execute(sql)
# Commit your changes in the database
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# disconnect from server
db.close()
4. READ操作
以下代码从STUDENT表中提取数据并打印出来:
#!/usr/bin/python
importMySQLdb
# Open database connection
db = MySQLdb.connect( "localhost", "user", "passwd", "TEST")
# prepare a cursor object using cursor() method
cursor = db.cursor()
# Prepare SQL query to INSERT a record into the database.
sql = "SELECT * FROM STUDENT "
try:
# Execute the SQL command
cursor.execute(sql)
# Fetch all the rows in a list of lists.
results = cursor.fetchall()
forrow inresults:
fname = row[ 0]
lname = r