天天看點

使用python的pandas讀取資料庫中資料,初始化到dataframe的速度過慢問題解決思路原生方法通過JDBC查詢的方式

原生方法

100萬資料,在oracle資料庫中,使用最友善的pandas自帶的read_sql方法

import pandas as pd
import sqlalchemy as sql
db_engine=sql.create_engine('oracle://test01:test01@test001db')
db_df1=pd.read_sql('select * from my_table1',db_engine)           

代碼是友善了,不過用了快10分鐘,dataframe才初始化完成

通過JDBC查詢的方式

import pandas as pd
import sqlalchemy as sql
db_engine=sql.create_engine('oracle://test01:test01@test001db')
conn=ora_engine.raw_connection()
cursor=conn.cursor()
queryset=cursor.execute('select * from my_table1')
columns=[for i[0] in queryset.description]
jdbc_data=queryset.fetchall()
db_df1=pd.DataFrame(                jdbc_data,columns=["A1","B2","C3"])
      
db_df1.columns=columns
db_df1.append(df_data)           

多幾行代碼,不過2分鐘就完成了dataframe的初始化動作,看來pandas自身的方式是需要優化的,不應該官方的方式對比正常方式有好幾倍的性能差異的。