orm和mysql_orm与mysql
一. orm執行原生sql語句
在模型查詢API不夠用的情況下,我們還可以使用原始的SQL語句進行查詢。
Django 提供兩種方法使用原始SQL進行查詢:一種是使用raw()方法,進行原始SQL查詢并返回模型實例;另一種是完全避開模型層,直接執行自定義的SQL語句。
1. 執行原生sql查詢
raw()管理器方法用于原始的SQL查詢,并返回模型的實例:
注意:raw()語法查詢必須包含主鍵。
這個方法執行原始的SQL查詢,并返回一個django.db.models.query.RawQuerySet 實例。 這個RawQuerySet 實例可以像一般的QuerySet那樣,通過迭代來提供對象實例
raw()管理器方法用于原始的SQL查詢,并返回模型的實例
ret= models.Book.objects.raw('select * from app01_book')print(ret)#
for i inret:print(i.id, i.title, i.commentNum)
原生SQL還可以使用參數,注意不要自己使用字符串格式化拼接SQL語句,防止SQL注入
d= {'commentNum': 'cn'}
ret= models.Book.objects.raw('select * from app01_book where id > %s', translations=d, params=[2,])for i inret:print(i.id, i.title, i.cn)
View Code
2. 直接執行自定義sql
有時候raw()方法并不十分好用,很多情況下我們不需要將查詢結果映射成模型,或者我們需要執行DELETE、 INSERT以及UPDATE操作。在這些情況下,我們可以直接訪問數據庫,完全避開模型層。
我們可以直接從django提供的接口中獲取數據庫連接,然后像使用pymysql模塊一樣操作數據庫
from django.db importconnection, connections
cursor=connection.cursor()
sql= 'select * from app01_book'cursor.execute(sql)
ret=cursor.fetchone()print(ret)
View Code
二.??Python腳本中調用Django環境(django外部腳本使用models)
if __name__ == '__main__':importos
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'manytable.settings')importdjango
django.setup()from app01 importmodels
books=models.Book.objects.all()print(books)
View Code
總結
以上是生活随笔為你收集整理的orm和mysql_orm与mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql基础语法DDL、DML、DQL
- 下一篇: jdbc是java语言编写的类和接口_J