Maison  >  Questions et réponses  >  le corps du texte

python - Comment puis-je optimiser la vitesse de read_sql de Pandas?

Mes besoins nécessitent une requête de données et une corrélation entre plusieurs bases de données, j'ai donc choisi d'utiliser des pandas, de lire les données via read_sql dans le dataframe et de générer directement les données cibles. Mais nous rencontrons actuellement un problème : read_sql est très lent. Par exemple, il faut 4 minutes et demie pour lire une table de volume de données de 37 W (22 champs) dans une dataframe de la bibliothèque Oracle. Le code est le suivant :

import pandas as pd
import sqlalchemy as sql
ora_engine=sql.create_engine('oracle://test01:test01@test01db')
ora_df1=pd.read_sql('select * from target_table1',ora_engine)

A pris 4 minutes et 32 ​​secondes

Même si j'utilise une autre méthode simple et grossière, elle sera beaucoup plus rapide que read_sql. Le code est le suivant :

import pandas as pd
import sqlalchemy as sql
ora_engine=sql.create_engine('oracle://test01:test01@test01db')
conn=ora_engine.raw_connection()
cursor=conn.cursor()
queryset=cursor.execute('select * from target_table1')
columns=[for i[0] in queryset.description]
df_data=queryset.fetchall()
ora_df1=pd.DataFrame()
ora_df1.columns=columns
ora_df1.append(df_data)

Cela a pris 1 minute et 31 secondes

Je voudrais demander à tout le monde ici s'il existe un moyen d'optimiser la vitesse de read_sql dans les pandas. Merci beaucoup~

.
淡淡烟草味淡淡烟草味2669 Il y a quelques jours2086

répondre à tous(1)je répondrai

  • 世界只因有你

    世界只因有你2017-06-28 09:24:30

    试试read_sql_table
    
    http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql_table.html#pandas.read_sql_table

    répondre
    0
  • Annulerrépondre