示例1
比如我们根据某些字段去获取内容,结果出现错误
sql2 = "select userName,userPhone,address,status from u_getsendaddress where 1=1 and userId=%s order by %s %s limit %s,%s"
sqlParam2 = [userId,sidx,order,offset,limit]
address_info =u_getsendaddress.objects.raw(sql2,params=sqlParam2)
print('sql:',address_info)
错误信息:
<RawQuerySet: select userName,userPhone,address,status from u_getsendaddress where 1=1 and userId=1 order by createtime desc limit 0,5>
Raw query must include the primary key
解决办法1:
我们在查询字段前面加上主键 id
sql2 = "select id,userName,userPhone,address,status from u_getsendaddress where 1=1 and userId=%s order by %s %s limit %s,%s"
sqlParam2 = [userId,sidx,order,offset,limit]
address_info =u_getsendaddress.objects.raw(sql2,params=sqlParam2)
print('sql:',address_info)
解决方法2:
把字段用 * 号代替。。。简单粗暴
sql2 = "select * from u_getsendaddress where 1=1 and userId=%s order by %s %s limit %s,%s"
sqlParam2 = [userId,sidx,order,offset,limit]
address_info = u_getsendaddress.objects.raw(sql2,params=sqlParam2)