python语言的缺陷:rowcount必须cursor全fetch后才能有值

it2024-02-21  88

实例:

>>> sql="select * from ab01  WHERE  bab017 is  null  and  aae053 is  null" >>> curs.execute(sql)

>>> print(curs.rowcount) 0

>>> print(len(list(curs))) 53 >>> print(len(list(curs))) 0

>>> print(curs.rowcount) 53

>>> curs.fetchall() [] >>> print(len(list(curs))) 0 >>> print(curs.rowcount) 53

修改我的代码如下,解决问题:

cursor执行完毕使用set接手所有结果,然后使用set处理结果

curs=conn.cursor() dt=str(datetime.datetime.now()).replace(':','').replace('-','').replace(' ','')[0:6] csv_file_dest= fn #"test"+dt+".tsv" outputFile=open(csv_file_dest,'w', newline='',encoding='utf-8') output=csv.writer(outputFile,delimiter='\t',quotechar='"') #sql="select * from AC01_TB55" curs.execute(sql) rs=curs.fetchall() print(curs.rowcount) #print(len(list(curs))) if curs.rowcount>0: cols=[] for col in curs.description: cols.append(col[0]) output.writerow(cols) for row_data in rs: output.writerow(row_data) outputFile.close()

 

最新回复(0)