执行原生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方法 结果:
下一篇:
数据库数据的增删改查操作