Django之ORM執行原生sql語句


  django中的ORM提供的操作功能有限,在模型提供的查詢API不能滿足實際工作需要時,可以在ORM中直接執行原生sql語句。

Django 提供兩種方法使用原生SQL進行查詢:一種是使用raw()方法,進行原生SQL查詢並返回模型實例;另一種是完全避開模型層,直接執行自定義的SQL語句。

 

raw()方法執行原生sql語句:

# raw()方法執行原生sql(調用的類名不區分是誰,只要存在均可執行)

  ret=models.Book.objects.raw('select * from app01_book')

  # ret=models.Publish.objects.raw('select * from app01_book')

  for book in ret:

      print(book.book_name)

      # print(book.__dict__)

 

直接執行自定義原生sql語句:

#直接執行自定義原生sql(完全避開模型層,類似pymysql操作)

  from django.db import connection

  cursor=connection.cursor()

  cursor.execute('select * from app01_book')

  ret=cursor.fetchall()

  print(ret)#((2, '小時光', Decimal('10.00'), 2), (3, '未來可期', Decimal('33.00'), 1), (4, '打破思維里的牆', Decimal('11.00'), 2), (5, '時光不散', Decimal('11.00'), 3))

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM