我有这段代码,我使用select sql
包从python
代码执行cx_oracle
语句:
import cx_Oracle
try:
cur = conn.cursor()
result = cur.execute('select * from table1')
print(str(cur.rowcount))
print(cur.fetchall())
except Exception as e:
print(e)
当我执行上述代码时,我看到0
进入了cur.rowcount
,但我看到为cur.fetchall()
打印了以下数据:
[('185',), ('1860',), ('1908',)]
cx_Oracle package documentation确实提到Cursor.rowcount
作为有效操作,所以我不确定为什么在我的代码中它会返回0
,即使数据来了?
答案 0 :(得分:5)
文档说明cursor.rowcount指定当前获取的行数。在完成cursor.execute()调用之后,没有提取任何行,因此结果为0.如果调用cursor.fetchone(),则结果为1,如果调用cursor.fetchmany(5),则结果将是6,依此类推(假设有足够的行来满足您的请求,当然!)。
答案 1 :(得分:0)
cx-oracle.readthedocs提到Cursor.rowcount指定受insert,update和delete语句影响的行数。您正在使用select语句。
cur.execute('select * from table1')
result = cur.fetchall()
print (len(result)) # this will return number of records affected by select statement
print (result)