原生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}]>
