xlsxwriter 错误 - 尝试将 SQL 输出写入 excel sheet

xlsxwriter error - Trying to write SQL output to excel sheet

我正在尝试使用 XLSXwriter 模块将 SQL 查询的输出写入 excel。

dwh_cur.execute("""select count (*) from sales where created_at = current_date - 1""")
sales = dwh_cur.fetchall()
worksheet1.write('A1', 'Sale ID')

row = 1
col = 0

for elm1 in sales:
    worksheet1.write(row, col, elm1)
    row += 1

得到一个错误:

TypeError: float() argument must be a string or a number, not 'tuple'

下面是我试图写入 excel 文件的数据

Sale_ID
1001
1002
1003
1004
1005

任何人都可以帮助我哪里出错了。谢谢..

dwh_cur.fetchall() 正在返回一个元组列表,可能是:

[(1001,), (1002,)]

考虑到这一点,您应该按如下方式编写单元格:

dwh_cur.execute("""select count (*) from sales where created_at = current_date - 1""")
sales = dwh_cur.fetchall()
worksheet1.write('A1', 'Sale ID')

row = 1
col = 0

for elm1 in sales:
    worksheet1.write(row, col, elm1[0])
    row += 1

您还可以利用 Python 的 enumerate() 功能自动为您提供行号:

dwh_cur.execute("""select count (*) from sales where created_at = current_date - 1""")
sales = dwh_cur.fetchall()
worksheet1.write('A1', 'Sale ID')

col = 0

for row, elm1 in enumerate(sales, start=1):
    worksheet1.write(row, col, elm1[0])

如果要返回多个项目,即对于第二列,您可以按如下方式添加它们:

for row, elm1 in enumerate(sales, start=1):
    worksheet1.write(row, col, elm1[0])
    worksheet1.write(row, col+1, elm1[1])