Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Django数据库中以列表的形式检索行数据?_Python_Mysql_Django_Excel_Django Queryset - Fatal编程技术网

Python 如何从Django数据库中以列表的形式检索行数据?

Python 如何从Django数据库中以列表的形式检索行数据?,python,mysql,django,excel,django-queryset,Python,Mysql,Django,Excel,Django Queryset,我希望以列表的形式检索Django数据库表行中的数据,这样我就可以对其进行迭代,并将列表中的每个值写入Excel电子表格。我尝试使用字典来实现这一点,但是字典在Python中没有排序,所以我的列都乱了序。我需要我的Excel电子表格看起来和我的数据库表一样,而不是随机排列。我怎样才能做到这一点 当前代码: def dump_attorneys_to_xlsx(request): if request.GET.get('export'): output = BytesIO(

我希望以列表的形式检索Django数据库表行中的数据,这样我就可以对其进行迭代,并将列表中的每个值写入Excel电子表格。我尝试使用字典来实现这一点,但是字典在Python中没有排序,所以我的列都乱了序。我需要我的Excel电子表格看起来和我的数据库表一样,而不是随机排列。我怎样才能做到这一点

当前代码:

def dump_attorneys_to_xlsx(request):
    if request.GET.get('export'):
        output = BytesIO()
        workbook = xlsxwriter.Workbook(output, {'in_memory': True})
        worksheet = workbook.add_worksheet('Summary')

        attorneys = Attorney.objects.all().values()
        # Write header
        worksheet.write_row(0, 0, attorneys[0].keys())
        # Write data
        for row_index, row_dict in enumerate(attorneys, start=1):
            worksheet.write_row(row_index, 0, row_dict.values())
        workbook.close()

        output.seek(0)

        response = HttpResponse(output.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        response['Content-Disposition'] = 'attachment; filename=summary.xlsx'
您可以使用可以获取字典列表而不是列表的对象,或者使用QuerySet的方法而不是
返回行列表而不是字典


否则,您可以按以下顺序(性能不太好)写入文件:

keys = attorneys[0].keys()
worksheet.write_row(0, 0, keys)
# Write data
for row_index, row_dict in enumerate(attorneys, start=1):
    row = [row_dict[k] for k in keys]
    worksheet.write_row(row_index, 0, row)