Python------Django数据库基本操作(基础实用!!!)

前言:
这几天在做一个外包项目,期间需要用到这个,正好自己也不会,特地来总结,加油!!!

建立一个MODEL

当然,为了方便讲解,我们还是建立一个简单的Model:

from django.db import models

class BookInfo(models.Model):
    title = models.CharField(max_length=20, verbose_name='名称')
    number = models.IntegerField(default=0, verbose_name='数量')
    comment = models.IntegerField(default=0, verbose_name='评论数量')
    is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'books'  	
        verbose_name = '图书'   # 在管理员admin站点中显示的名称

    def __str__(self):
        return self.btitle

class StudentInfo(models.Model):
	"""
	看是男是女
	"""
    GENDER_CHOICES = (
        (0, 'female'),
        (1, 'male')
    )
    class Meta:
        db_table = 'students'
        verbose_name = '学生'
    name = models.CharField(max_length=20, verbose_name='名称')
    #  default 为缺省值 这点很重要哦!!!
    gender = models.SmallIntegerField(choices=GENDER_CHOICES, default=0, verbose_name='性别')  
    info = models.CharField(max_length=200, null=True, verbose_name='信息') 
    book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name='图书名称') # 外键,不能省略
    is_delete = models.BooleanField(default=False, verbose_name='删除')


    def __str__(self):
        return self.hname

数据库操作(正题)

给数据库中模型增加元素

使用save方法

book=BookInfo(title='高等数学',number='10000',comment='400')
book.save()

上面这个等价于:

book=BookInfo()
book.title = 'xxx'
book.number = 'xxx'
book.comment = 'xxx'
book.save()

使用create方法

StudentInfo.objects.create(name='豪哥哥'gender='1',info='小可爱',book=book)

防止重复创建

🌂:首先尝试获取,不存在就创建,可以防止重复

StudentInfo.objects.get_or_create(name='豪哥哥'gender='1',info='小可爱',book=book)

🌂:最后一种方法返回一个元组,(object, True/False),创建时返回 True, 已经存在时返回 False

数据库内容的修改

使用update方法

当然filter中的查找条件也可以改为其他的后面会讲解

StudentInfo.objects.filter(info='小可爱').update(info='大可爱')

使用get方法配合save方法

🌂:关于__exact后面也会讲解的

# 两种方式
stu = StudentInfo.objects.get(gender__exact = 1)   # 可以且仅可以返回一条数据。 没有数据或返回多条数据都会抛异常。
stu = StudentInfo.objects.get(gender= 1)   # 简写形式 __exact可以省略。返回模型对象
stu.name = "小帅哥"
stu.save()

数据库内容的查询

get函数(上面提了这里不多讲)

(知道get返回一条数据就ok!)

all函数 (查询所有)

students = StudentInfo.objects.all()   # 查询所有,返回QuerySet查询集(可以遍历)

迭代用法如下所示:

stu = StudentInfo.objects.all()
for i in stu:
    print(i.name)

🌂:多说一点,如果想要知道数据库中有多少条数据,可以使用count方法

StudentInfo.objects.count()
结果简单来说就是有多少行,很容易理解对吧

filter函数 (条件查询)

属性名称__比较运算符=你要修改的内容
注意了!!!敲重点!!!
属性名称和比较运算符间使用两个下划线,记住是两个

exact的使用

前面已经提到过,搬运工哈哈哈

# 两种方式
stu = StudentInfo.objects.get(gender__exact = 1)   # 可以且仅可以返回一条数据。 没有数据或返回多条数据都会抛异常。
stu = StudentInfo.objects.get(gender= 1)   # 简写形式 __exact可以省略。返回模型对象
contains、startswith、endswith(模糊查询)

从单词字面意思可知:
contains:查询包含"某个值"
statwith:以什么开头
endswith:以什么结尾
这里不给例子了

空值查询

🌂:查询学生名不为空的学生名

StudentInfo.objects.filter(title__isnull=False)

返回QuerySet对象:

<QuerySet [<BookInfo: 豪哥哥>, <BookInfo: 小哥哥>>
比较查询

gt :大于 (greater then)
gte:大于等于 (greater then equal)
lt :小于 (less then)
lte :小于等于 (less then equal)
随便整一个例子:

BooktInfo.objects.filter(number__gte=200)


exclude函数 (filter函数取反)

查询number不为300的所有图书。

books = BookInfo.objects.exclude(number = 300) 
 # 与filter函数作用相反
 #返回QuerySet查询集(可以遍历)
order_by函数 (排序)
books = BookInfo.objects.all().order_by('-number')   # 'id'表示升序; '-number'表示降序。
books = BookInfo.objects.order_by('-number')   #  其实.all()可以省略。 默认查询所有。最好还是加上吧!
# 对查询结果进行排序
# 返回QuerySet

暂时到这里吧,觉得基础比较实用的部分!

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python是一种高级编程语言,而Django则是Python的一个开发框架,可以快速地搭建出Web应用。基于Django的图书管理系统,可以轻松管理书籍、借阅记录以及用户信息。该系统包含了完整的源代码和数据库脚本,方便用户进行二次开发和使用。 该系统主要的功能模块包括书籍管理、借阅管理、用户管理等。在书籍管理模块中,用户可以方便地添加、删除、修改和查询书籍信息,比如书名、作者、出版社、ISBN等。可以对书籍进行分组管理,方便分类展示和查询。在借阅管理模块中,用户可以将书籍借出给指定的用户,同时记录借阅的开始时间和结束时间。在结束时间到来时,系统会自动计算出借阅的天数,并生成借阅记录和罚款信息。在用户管理模块中,用户可以添加、删除、修改和查询用户信息,比如姓名、性别、联系方式等。 该系统采用了Python中的ORM框架来操作数据库,能够支持多种数据库类型,如SQLite、MySQL、Oracle等。因此用户可以根据自己的需求选择相应的数据库。系统还包含了用户权限管理模块,可以控制不同用户的功能操作权限,增强了系统的安全性和可维护性。 总之,基于Django的图书管理系统源码是一个功能齐全、易于使用和扩展的开源项目,能够为图书馆、学校、企业等机构提供便捷的图书管理服务。 ### 回答2: 基于django的图书管理系统源码是一个功能完整的项目,可以用于学习和进一步开发。该项目包含了以下功能:管理员登录、图书信息的增删改查、借阅信息的管理等。源码中使用了不同的django组件和库,如django-admin、django-rest-framework等。 该项目的数据库使用了sqlite3,其脚本包含在源码中,方便直接部署和使用。数据库包含了两个表:图书表和借阅记录表。其中,图书表包含了图书的基本信息,如图书编号、书名、作者、出版社等;借阅记录表则包含了借阅者和被借阅书籍的信息,如借阅者姓名、图书编号、借阅时间、归还时间等。 该项目的实现主要依赖于django的MVC模式,将数据库表封装成ORM模型,并通过http请求将数据传递到前端展示。前端使用了Bootstrap和jQuery,呈现出简洁美观的界面,用户可以通过该界面管理图书和借阅记录。 总的来说,该基于django的图书管理系统源码是一份非常有价值的学习资料,既可以用于了解django的应用,也可以作为一个现成的项目来进行二次开发和创新。 ### 回答3: Python基于Django图书管理系统源码(含数据库脚本)是一个非常实用的工具。该源码通过Django框架来实现图书管理系统的基本功能,包括添加、删除、修改、查询、借阅、归还等操作,以及一些管理功能,如用户管理、权限管理、借阅记录管理等。 该系统的数据库使用SQLite3这个轻量级的关系型数据库数据库脚本清晰明了,易于理解和维护。用户可以根据自己的实际需求修改和扩展该系统。 该系统采用了MVC模式,即模型(Model)、视图(View)和控制器(Controller)之间的分离,使得系统的可扩展性和可维护性提高了很多。此外,该系统还使用了一些其他的Python库和工具,如Pillow、Bootstrap、jQuery等,为用户提供了更加优质的用户体验。 总的来说,Python基于Django图书管理系统源码(含数据库脚本)是一个非常实用的工具,它可以帮助用户快速搭建一个完整的图书管理系统,并提供了一些常用的功能和管理工具,方便用户使用和管理。如果您对该系统有兴趣,不妨下载一份试试,相信它一定会给您带来意想不到的收获。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值