需求是从oracle中按批次取数据,如一次取1000条,操作完再接着取。实现代码如下:
db_conn = cx_Oracle.connect("user", 'pwd', "host:port/sid", encoding="UTF-8")
with db_conn.cursor() as cursor:
cursor.arraysize = 100 # 设置每批次获取数据量为100条
cursor.execute("select * from xx.zz")
i = 0
while True:
rows = cursor.fetchmany() # fetchmany有参数设置每批次大小,不设置时,取 arraysize 的值
if not rows: # 当没有数据时退出循环
break
print(i, len(rows), "*" * 40)
for row in rows:
print(row)
i += 1
db_conn.close()
参考链接: https://cx-oracle.readthedocs.io/en/latest/user_guide/sql_execution.html#fetch-methods