将cx_Oracle arraysize参数与pandas read_sql一起使用

时间:2015-10-09 09:29:41

标签: python pandas cx-oracle

使用cx_Oracle从Oracle中选择大量数据时,无论是使用pandas read_sql还是使用cx_Oracle Cursor fetchall()方法,我发现它都非常慢。

通过增加Cursor的arraysize属性大大提高了性能 - 让我从fetchall()中获得了不错的性能。 pandas read_sql()Connection对象作为输入,光标在函数内创建,因此我不明白如何应用相同的设置并仍然利用{{{ 1}}功能。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

使用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了解"其他连接参数"