Meine Anforderungen erfordern eine Datenabfrage und Korrelation zwischen mehreren Datenbanken. Daher habe ich mich für die Verwendung von Pandas entschieden, die Daten über read_sql gelesen und im Datenrahmen verarbeitet, um die Zieldaten direkt zu generieren. Derzeit stoßen wir jedoch auf ein Problem: read_sql ist sehr langsam. Das Einlesen einer 37-W-Datenvolumentabelle (22 Felder) in einen Datenrahmen in der Oracle-Bibliothek dauert beispielsweise viereinhalb Minuten. Der Code lautet wie folgt:
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)
Dauerte 4 Minuten und 32 Sekunden
Selbst wenn ich eine andere einfache und grobe Methode verwende, ist sie viel schneller als read_sql. Der Code lautet wie folgt:
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)
Es dauerte 1 Minute und 31 Sekunden
Ich möchte alle hier fragen, ob es eine Möglichkeit gibt, die Geschwindigkeit von read_sql in Pandas zu optimieren. Vielen Dank~