python 数据库查询结果转dict_django 使用sql语句查询结果返回字典Dict方法

本文介绍了如何在Django中将SQL查询结果转化为字典(Dict)和namedtuple,以便更方便地访问数据。提供两种方法,包括使用`dictfetchall`函数将结果转换为字典列表,以及利用`collections.namedtuple`创建命名元组进行数据访问。这些方法在不显著增加性能和内存开销的情况下,提高了数据操作的便捷性。
摘要由CSDN通过智能技术生成

在django中一些比较复杂的方法不适合使用orm,需要使用到sql语句查询。而django默认使用sql语句查询直接返回一个列表元祖数据,使用起来及其不是很方便。

django使用sql语句方法:from django.db import connection

def my_custom_sql(self):

with connection.cursor() as cursor:

cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])

cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])

row = cursor.fetchone()

return row

默认情况下,Python DB API将返回没有字段名称的结果,意味着您最后得到一个list值,而不是一个dict。在消耗较小的性能和内存成本下,可以使用以下内容返回结果dict。

第一种 方法:def dictfetchall(cursor):

"从cursor获取所有行数据转换成一个字典"

columns = [col[0] for col in cursor.description]

return [

dict(zip(columns, row))

for row in cursor.fetchall()

]

第二种方法:是使用python标准库:collections.namedtuple()。

namedtuple是一个类似元组的对象,其字段可通过属性查找

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值