執行原生SQL語句的方式


原生sql語句


cursor方法:
from api.models import *
from django.db import connection,connections
cursor=connection.cursor()##cursor=connection['default'].cursor()配置了sql數據庫的情況
##不傳參數的情況
# cursor.execute("""select * from api_userinfo """)

為原生sql語句設置參數的情況
# cursor.execute("""select * from api_userinfo where id=%s""",[2,])
# cursor.execute("""select * from api_userinfo where id=%s"""%1)
cursor.execute("select * from api_userinfo where id=%s",params=[1,])
# row=cursor.fetchone()
# row=cursor.fetchmany()
row=cursor.fetchall()##拿到全部的數據
# print(row)

'''
[(1, 'yunxin', '123')]
'''




row方法:(摻雜着原生sql和orm來執行的操作)
res=UserInfo.objects.raw('select id as nid  from  api_userinfo  where  id>%s',params=[1,])
print(res.columns)
print(type(res))
 
        



 
        

在select里面查詢到的數據orm里面的要一一對應
UserInfo.objects.raw('select id as nid from '其他表')
后面的select的不一定是UserInfo表,有可能是是其他表,只要字段名字一樣就可以

如果select的是其他表的時候,必須將名字設置為當前UserInfo的主鍵列名

translations:
UserInfo.objects.raw('select id as nid from '其他表' where nid>%s',params=[1,])
后面可以加參數進來
name={}
translations=name
將或取到的列名轉化為指定的列名,才可以查詢




# UserInfo.objects.all().using('default')
val=UserInfo.objects.using('default').all().values('id')
#選擇連接那個數據庫,但是queryset的時候,才有using方法
print(val)
#選擇連接那個數據庫,但是queryset的時候,才有using方法
結果:
<QuerySet [{'id': 1}, {'id': 2}, {'id': 3}]>

exclude方法:(將什么排除)
val=UserInfo.objects.using('default').all().values('id').exclude(id=1)##exclude將id=1的排除在外
#選擇連接那個數據庫,但是queryset的時候,才有using方法
print(val)
結果:

<QuerySet [{'id': 2}, {'id': 3}]>

 


免責聲明!

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



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