gpt4 book ai didi

python - 从使用原始 sql 导出到 django 中的 CSV/Excel 文件

转载 作者:行者123 更新时间:2023-12-04 21:02:34 25 4
gpt4 key购买 nike

在 django 中生成 excel/csv 文件时遇到问题,主要是因为我使用原始 sql(直接)查询数据库。我只能访问数据库而不是模型类。这是我的代码片段。
我收到一个错误 'dict' 对象没有属性 'todo_job'
查看代码

def query_to_dicts(query_string, *query_args):
"""Run a simple query and produce a generator
that returns the results as a bunch of dictionaries
with keys for the column values selected.
"""
#log.debug(str(dir(connection)))
cursor = connection.cursor()
#log.debug(str(dir(cursor)))
cursor.execute(query_string, query_args)
#log.debug(cursor.rowcount)log
col_names = [desc[0] for desc in cursor.description]
#log.debug(str(col_names))
while True:
row = cursor.fetchone()
if row is None:
break

row_dict = dict(izip(col_names, row))
yield row_dict

return

def excel(request):
todo_obj = query_to_dicts('''SELECT * FROM users''')

response = HttpResponse(mimetype='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename=elagu.xls'
wb = xlwt.Workbook(encoding='utf-8')
ws = wb.add_sheet("Todo")

row_num = 0

columns = [
(u"ID", 6000),
(u"t_stamp", 8000),

]

font_style = xlwt.XFStyle()
font_style.font.bold = True

for col_num in xrange(len(columns)):
ws.write(row_num, col_num, columns[col_num][0], font_style)
# set column width
ws.col(col_num).width = columns[col_num][1]

font_style = xlwt.XFStyle()
font_style.alignment.wrap = 1

for obj in todo_obj:
row_num += 1
row = [
row_num,
obj.todo_job,
obj.created_date.strftime("%A %d. %B %Y"),
]
for col_num in xrange(len(row)):
ws.write(row_num, col_num, row[col_num], font_style)

wb.save(response)
return response

最佳答案

您正在尝试访问 dict 的属性在这些地方不存在的对象:

obj.todo_job
obj.creation_date

访问 dict的值,您需要使用下标运算符( [] )和相关键作为字符串,这将给出:
obj['todo_job']
obj['creation_date']

引用 Python dict documentation了解更多信息。

关于python - 从使用原始 sql 导出到 django 中的 CSV/Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com