本文介绍: 在Django中,自带的ORM已经可以满足我们的大部分需求了. 但在数据量比较大的的时候, 考虑到查询效率,以及用户体验等问题,我们就不得不考虑使用SQL语句查询数据库了(本人就是遇到了这样的问题)这里面我们使用了原生的SQL查询方法,那么这里就必须考虑一个问题,就是sql注入的问题,在下一篇我会写一下这方面一些见解.使用raw()方法, 可以自己定义SQL语句, 在这里需要注意,查询字段中必须含有。这里我们用, 到了PostModel, model中的一些数据处理方法在这里也是适用的。…
在Django中,自带的ORM已经可以满足我们的大部分需求了. 但在数据量比较大的的时候, 考虑到查询效率,以及用户体验等问题,我们就不得不考虑使用SQL语句查询数据库了(本人就是遇到了这样的问题)
废话不多说, 直接开始!!!
首先定义一张表
from datetime import datetime
from django.db import models
class PostModel(models.Model):
postid = models.IntegerField(unique=True, help_text="岗位id")
create_by = models.CharField(max_length=50, blank=True, null=True, help_text="创建人")
create_time = models.DateField(auto_now_add=datetime.now, help_text="创建时间")
status = models.SmallIntegerField(default=0, help_text="状态 0:启用, 1:删除")
level = models.SmallIntegerField(default=0, help_text="等级0,1,2,")
class Meta:
db_table = "post"
def __str__(self):
return self.name
# raws 是一个QuerySet
raws = PostModel.objects.raw(" select * from post limit 0, 10 ")
# 获取第一条数据的id
id = raws[0].id
# 也可以序列化后在获取id
raws = raws.values()
id = raws[0]["id"]
使用raw()方法, 可以自己定义SQL语句, 在这里需要注意,查询字段中必须含有主键, 这里我们用, 到了PostModel, model中的一些数据处理方法在这里也是适用的
from django.http import HttpRequest, HttpResponse
from django.db import connection
def my_post(request:HttpRequest)->HttpResponse:
with connection.cursor() as cursor:
cursor.execute("select * from post ")
sql_data = cursor.fetchall() # 获取一条数据, 使用fetchone()
colums = [col[0] for col in cursor.description]
sql_data = [dict(zip(colums, row)) for row in sql_data]
return HttpResponse(json.dumps(sql_data))
注意: 这里面我们使用了原生的SQL查询方法,那么这里就必须考虑一个问题,就是sql注入的问题,在下一篇我会写一下这方面一些见解.
感谢各位的阅读!
原文地址:https://blog.csdn.net/m0_60627063/article/details/126294922
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_13203.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。