LEFT JOIN Django ORM

两个表做联合查询,从a, b表中各取一部分字段

将列表记录转为字典:

def dictfetchall(cursor):
    "Return all rows from a cursor as a dict"
    columns = [col[0] for col in cursor.description]
    return [
        dict(zip(columns, row))
        for row in cursor.fetchall()
    ]

我这里value是传进来的参数,你可以按照需要的方式写SQL语句。

from django.db import connection
cursor=connection.cursor()
where = 'where project_name=' + "'" + value + "'"
cursor.execute('select a.name, b.age from personal a \
    left join information b on a.name=b.name ' + where)
rows=dictfetchall(cursor)

实际效果看官方给的样例吧:

>>> from django.db import connection
>>> cursor=connection.cursor()
>>> cursor.execute("SELECT id, parent_id FROM test LIMIT 2");
>>> cursor.fetchall()
((54360982, None), (54360880, None))

>>> cursor.execute("SELECT id, parent_id FROM test LIMIT 2");
>>> dictfetchall(cursor)
[{'parent_id': None, 'id': 54360982}, {'parent_id': None, 'id': 54360880}]

参考:

Django之ORM执行原生sql语句

https://docs.djangoproject.com/en/3.1/topics/db/sql/   要说专业,还是得官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值