将 cx_Oracle arraysize 参数与 pandas read_sql 一起使用
using the cx_Oracle arraysize parameter with pandas read_sql
当使用 cx_Oracle 从 Oracle 选择大量数据时,我发现无论是使用 pandas read_sql
还是 cx_Oracle 游标 fetchall()
方法。
通过增加 Cursor 的 arraysize
属性,性能得到了显着改善 - 让我能够从 fetchall()
中获得不错的性能。 pandas read_sql()
将 Connection
对象作为输入并在函数内创建光标,因此我不清楚如何应用相同的设置并仍然利用 read_sql()
函数。我错过了什么吗?
当使用 sqlalchemy
创建连接数据库的引擎时,您可以传递 arraysize
参数,以便在创建游标时使用它:
import sqlalchemy
engine = sqlalchemy.create_engine("oracle+cx_oracle://user:pass@host:port/dbname", arraysize=50)
pd.read_sql("query ...", engine)
在此处查看文档:http://docs.sqlalchemy.org/en/rel_1_0/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle for "Additional Connect Arguments"
当使用 cx_Oracle 从 Oracle 选择大量数据时,我发现无论是使用 pandas read_sql
还是 cx_Oracle 游标 fetchall()
方法。
通过增加 Cursor 的 arraysize
属性,性能得到了显着改善 - 让我能够从 fetchall()
中获得不错的性能。 pandas read_sql()
将 Connection
对象作为输入并在函数内创建光标,因此我不清楚如何应用相同的设置并仍然利用 read_sql()
函数。我错过了什么吗?
当使用 sqlalchemy
创建连接数据库的引擎时,您可以传递 arraysize
参数,以便在创建游标时使用它:
import sqlalchemy
engine = sqlalchemy.create_engine("oracle+cx_oracle://user:pass@host:port/dbname", arraysize=50)
pd.read_sql("query ...", engine)
在此处查看文档:http://docs.sqlalchemy.org/en/rel_1_0/dialects/oracle.html#module-sqlalchemy.dialects.oracle.cx_oracle for "Additional Connect Arguments"