django中sqlite的数据保存在哪了 django使用sql语句

admin2024-05-30  20

Django中view模块操作数据库

1、模型的增删改查(ORM模块)

导入model模块中的表模型

1.1 all函数

比如:

from users.models import UserInfo
#查询所有数据,返回的是一个QuerySet关联集
data = UserInfo.object.all()

在这里是导入users模型文件下的models.py文件中的UserInfo表模型

1.2 get函数

get()获取的是指定条件符合数据,只有一条,且找不到就报错。

1.3 count函数

计数函数,返回的是数据的数目

1.4 filter函数(条件查询)

条件查询。(可以通过逗号,连接多个条件) 返回QuerySet查询集(可以遍历)

books = BookInfo.objects.filter(bookname__exact = '西游记') 
 # __exact 等于。 __exact 可以省略。 (__iexact 不区分大小写)

books = BookInfo.objects.filter(bookname__contains = '西')  
# __contains 包含。模糊查询。 (__icontains 不区分大小写)

books = BookInfo.objects.filter(bookname__endswith = '记')  
# __endswith 以..结尾。 __startswith 以..开头。 (__iendswith 不区分大小写)

books = BookInfo.objects.filter(bookname__isnull = False)
  # __isnull 是否为空。 True:表示为null。 False表示not null。

books = BookInfo.objects.filter(id__in = [1,3,5,7,9])
  # __in 范围查询。

books = BookInfo.objects.filter(id__gt = 1)
 # __gt 大于。 __lt 小于。 __gte 大于等于。 __lte 小于等于。

books = BookInfo.objects.filter(publictime__gt = date(2000,2,2)) 
 # 日期查询。日期大于条件中的日期

books = BookInfo.objects.filter(publictime__year = 1980)  
# 日期查询。(year、month、day、week_day、hour、minute、second)

注意点:
filter既可以查询一条语句,也可以查询多条语句 但是查询的结果放在一个列表里面
如果查询不到任何满足条件的数据,则返回的是一个空列表

1.5 exclude函数

#查询id不为1的所有图书,返回QuerySet查询集(可以遍历)
book = BookInfo.objects.exclude(id = 1)

1.6 order_by函数

对查询结果进行排序。 返回QuerySet查询集(可以遍历)

book = BookInfo.objects.all().order_by('-id') 
#'id'表示升序; '-id'表示降序。
book = BookInfo.objects.order_by('-id')
#.all()可以省略。 默认查询所有。 可以结合filter等函数一起使用 。

1.7 关于外键的查询

add.userinfo_set.all()
#查询userinfo类生成的表的所有外键

1.8 create函数

Bookinfo.objects.create(填写字段值)

1.9 save函数

django中sqlite的数据保存在哪了 django使用sql语句,django中sqlite的数据保存在哪了 django使用sql语句_django,第1张

save是把创建的对象提交到数据库

1.10 update函数

一般是结合filter函数使用,通过filter函数筛选出需要改的数据然后在后面。update(改的字段 =值)

1.11 delete函数

与update函数的使用方法相似,一般也是结合filter函数使用,在使用filter函数查到需要删除的数据后,使用.delete()删除
##2. 导pymysql
导入pymysql文件,利用原生语句对数据库进行操作,性能更高

import pymysql
con = pymysql.connect(host='localhost', user='root', password='mysql', database='pai0805', port=3306,
                     charset='utf8')
cur = con.cursor()
cur.execute('select * from user_userinfo;')
ret = cur.fetchall()
print(ret)
str1 = ''
for i in ret:
   print(i)
   str1+='<ul><li>'+str(i[0])+'</li><li>'+i[1]+'</li><li>'+str(i[2])+'</li><li>'+i[3]+'</li></ul>'
print(str1)
return HttpResponse(str1)

附注:

在models.py文件中,添加在表类中,称为元类。但是修改之后需要迁移

class Meta:
        #用来设置数据库的表名
        db_table='bookinfo'
        verbose_name = '书籍'
        #修改后台管理站点中数据库表的名字
        verbose_name_plural=verbose_name

2.利用sqlalchemy

由于模型的增删改查相对来说性能差一点,pymysql的语句比较复杂,因此可以使用sqlalchemy来提高性能,且语句也不是特别复杂。
首先,准备步骤(导包,再连接数据库):

from sqlalchemy import create_engine
engine = create_engine('mysql://root:mysql@localhost/pai0805',encoding='latin1',echo = True)

然后就可以通过(对数据库CRUD):

cur = engine.execute(sql语句)

然后:

#关闭光标
cur.close

3.raw函数(原始sql查询)

#查询id等于1的用户
UserInfo.objects.get(id=1)#todo:查询不到会报错
UserInfo.objects.raw('select * from userInfo where id=1;')

raw函数是分装在django框架底层的函数,django框架的ORM模块的基础底层实现sql就是利用raw函数


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!