Django数据库操作(执行原生SQL的几种方法)

本文深入探讨了Django ORM的高级查询技巧,包括使用extra方法进行结果集修改,使用raw方法执行原始SQL并返回模型,以及如何通过游标执行自定义SQL。这些技巧能够帮助开发者更灵活地操作数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用extra方法

  解释:结果集修改器,一种提供额外查询参数的机制

  说明:依赖model模型

  用在where后:

    Book.objects.filter(publisher_id="1").extra(where=["title='python学习1'"])    

  用在select后  

    Book.objects.filter(publisher_id="1").extra(select={"count":"select count(*) from hello_book"})

 

2.使用raw方法

  解释:执行原始sql并返回模型

  说明:依赖model多用于查询

  用法:

    book = Book.objects.raw("select * from hello_book")
    for item in book:
      print(item.title)

 

3.执行自定义SQL

  解释:利用游标执行

  导入:from django.db import connection

  说明:不依赖model

  用法:  

    from django.db import connection

    cursor = connection.cursor()
    #插入
    cursor.execute("insert into hello_author(name) values('xiaol')")
    #更新
    cursor.execute("update hello_author set name='xiaol' where id=1")
    #删除
    cursor.execute("delete from hello_author where name='xiaol'")
    #查询
    cursor.execute("select * from hello_author")
    #返回一行
    raw = cursor.fetchone()
    print(raw)
    # #返回所有
    # cursor.fetchall()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值