pandas讀取各類sql數據源


大數據分析中,我們經常需要使用pandas工具讀取各類數據源並將結果保存到數據庫中。

本文總結了一些讀取和寫入常用數據庫數據的一些方法,包括mysql,oracle,impala等。

其中讀取數據庫數據有兩種方法,一種是DBAPI2 connection,另一種是SQLAlchemy engine。下面介紹這兩種方法。

一、讀寫mysql數據

1.首先安裝python連接mysql的驅動,以mysql.connector為例

2.pandas讀取數據,分兩種方式:

#DBAPI2 connection方式連接
import mysql.connector
import pandas as pd
conn
=mysql.connector.connect(host='127.0.0.1',user='root', passwd='password', db='test') sql='select * from mytable' df=pd.read_sql(sql,conn)
#SQLAlchemy engine方式
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+mysqlconnector://root:password@10.39.211.198:3306/test')
df=pd.read_sql(sql,engine )

 3.pandas寫入數據到mysql只有SQLAlchemy engine方式

#SQLAlchemy engine方式
from sqlalchemy import create_engine
import pandas as pd
engine = create_engine('mysql+mysqlconnector://root:password@10.39.211.198:3306/test')
df.to_sql('mytable',con=engine,if_exists='append',index=False)

 

二、讀寫oracle數據

1.首先安裝python連接oracle的驅動cx_oracle

第2、3步驟同上,只是數據庫驅動的寫法不同。

oracle寫成:

from sqlalchemy import create_engine
conn=cx_Oracle.connect('scott','tiger','10.0.0.100:1521/ORCL')
engine=create_engine('oracle://scott:tiger@10.0.0.100:1521/ORCL', echo=True)  

三、讀寫impala數據

1.首先安裝python連接impala的驅動(參照我的博客http://www.cnblogs.com/dotafeiying/p/6956265.html)

第2、3步驟同上,只是數據庫驅動的寫法不同。

impala寫成:

from impala.dbapi import connect
from sqlalchemy import create_engine

conn = connect(host='127.0.0.1',port=21050,database='db')
engine=create_engine('impala://127.0.0.1:21050/db')

用pandas往impala寫入數據時可能會拋出數據類型錯誤,

 

要注意impala的數據類型,下面給一個我在實際項目中解決的例子:

from sqlalchemy.sql.sqltypes import String
df.to_sql('address',con=sqlconn,if_exists='append',index=False,dtype={'address': String})

 一定要加后面的 dtype={'address': String}

現在,你就可以盡情的用pandas進行數據分析了。

以上是我個人的一些總結。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM