Python 如何编写一个用sqlite3数据库填充的CSV文件?

Python 如何编写一个用sqlite3数据库填充的CSV文件?,python,django,csv,sqlite,Python,Django,Csv,Sqlite,对于如何使用给定用户的mymodels.py中的信息填充以下csv函数,我有点困惑。谁能给我指出正确的方向吗?我是否需要处理seppy文件中的信息,还是可以在视图中处理 我的观点是下载信息 def download(request): response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=UserData.csv' write

对于如何使用给定用户的mymodels.py中的信息填充以下csv函数,我有点困惑。谁能给我指出正确的方向吗?我是否需要处理seppy文件中的信息,还是可以在视图中处理

我的观点是下载信息

def download(request):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=UserData.csv'
    writer = csv.writer(response)
    writer.writerow(['Date', 'HighBGL', 'LowBGL', 'Diet', 'Weight', 'Height', 'Etc'])
    writer.writerow(['Info pertaining to date 1'])
    writer.writerow(['info pertaining to date 2'])
    return response
我感兴趣的保存信息的模特之一

class DailyVital(models.Model):
    user =  models.ForeignKey(User)
    entered_at = models.DateTimeField()
    high_BGL = models.IntegerField()
    low_BGL = models.IntegerField()
    height = models.IntegerField(blank = True, null = True)
    weight = models.IntegerField(blank = True, null = True)

一种简单的方法是将模型转换为列表列表

首先,您需要一个对象来列出函数:

def object2list(obj, attr_list):
    " returns values (or None) for the object's attributes in attr_list"
    return [getattr(obj, attr, None) for attr in attr_list]
然后,您只需通过列表理解将其传递给csvwriter(给定您查询的一些对象的列表)


首先,您需要查询django模型,例如:
DailyVital.objects.all()
DailyVital.objects.filter(user=request.user)

然后,您可以手动将对象转换为元组,也可以使用Django
QuerySet
和字段名列表来返回元组而不是对象。比如:

def download(request):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=UserData.csv'
    writer = csv.writer(response)
    writer.writerow(['Date', 'HighBGL', 'LowBGL', 'Weight', 'Height'])
    query = DailyVital.objects.filter(user=request.user)
    for row in query.values_list('entered_at', 'high_BGL', 'low_BGL', 'weight', 'height'):
       writer.writerow(row)
    return response

如果Django不需要它,您也可以考虑<代码> SqLe3e/Cuth>命令行程序的代码> -CSV选项。< /P>您需要获取数据以将其放入CSV:<代码>记录> DyLyVial.Objor。

def download(request):
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=UserData.csv'
    writer = csv.writer(response)
    writer.writerow(['Date', 'HighBGL', 'LowBGL', 'Weight', 'Height'])
    query = DailyVital.objects.filter(user=request.user)
    for row in query.values_list('entered_at', 'high_BGL', 'low_BGL', 'weight', 'height'):
       writer.writerow(row)
    return response