我正在尝试使用fetchmany()
使用pyodbc
将一个大表写入csv
。我可以正确连接,但唯一写入的记录是 header 。循环数据库游标的正确方法是什么?
cxn = pyodbc.connect(cxn data)
mssql_cursor = cxn.cursor()
mssql_cursor.execute(sql_query)
c = csv.writer(open('file.csv', 'w', encoding ='UTF-8', newline='\n'), delimiter='|')
c.writerow([i[0] for i in mssql_cursor.description])
results = mssql_cursor.fetchmany(10000)
while results:
c.writerows(results)
results = mssql_cursor.fetchmany(10000)
mssql_cursor.close()
cxn.close()
编辑:看起来通过 fetchmany 方法没有返回任何内容。我添加了 print(len(results))
,结果为 0。
最佳答案
我会保持简单并进行迭代:
cxn = pyodbc.connect(cxn data)
mssql_cursor = cxn.cursor()
rows = mssql_cursor.execute(sql_query)
with open('file.csv', 'w', encoding ='UTF-8', newline='\n') as csvfile:
c = csv.writer(csvfile, delimeter='|')
for row in rows:
c.writerow(row)
mssql_cursor.close()
cxn.close()
这有效吗?如果它在这里工作并且您想切换到 executemany()
,那么修改它应该相当容易。
关于python - PYODBC Fetchmany 到 csv 仅输出 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41625114/