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

 
原生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方法 结果: exclude方法:(将什么排除) val=UserInfo.objects.using(default).all().values(id).exclude(id=1)##exclude将id=1的排除在外 #选择连接那个数据库,但是queryset的时候,才有using方法 print(val) 结果:  
经验分享 程序员 微信小程序 职场和发展