django中的models模块及数据库一些基本操作

时间:2022-01-06 05:11:18

使用django自带的轻量级数据库sqlite

mvc 开发模式(Java,php)             django是mtv模式

m------model 操作数据库的          m------model 操作数据库的

v------view视图                          t------template视图

c------controller控制逻辑             v------view控制逻辑

1.首先定义表及字段 在models.py中,然后在manage.py的目录执行,后续对表结构的任何操作都需要执行下面这两个命令

python3 manage.py makemigrations(生成数据文件)

python3 manage.py migrate(生成表结构)

django中的models模块及数据库一些基本操作django中的models模块及数据库一些基本操作

2.管理后台操作数据库 需要在admin.py中增加,如下所示,就可以在后台管理中给表添加删除数据了

django中的models模块及数据库一些基本操作django中的models模块及数据库一些基本操作

 

 

3.创建数据库完成后可以对数据库进行一些常规操作(增删改查)

批量数据的删除和添加操作不需要 调用save

all,filter和exclude 返回的数据都是批量的(一个列表)

取一条数据就是取下标,取一条数据里面某个字段的元素直接.xxx(xxx是字段名)

import django,os
os.environ.setdefault(DJANGO_SETTINGS_MODULE,dj_mh.settings)
django.setup()
from user.models import Category
from django.db.models import Q

#添加数据
#第一种添加方式
# Category.objects.create(name=‘python‘)#新增数据,create_time,update_time不需要添加
#第二种添加方式 实例一个对象然后 调用save方法
# obj = Category(name=‘mysql‘)
# obj.save()

# obj1 = Category.objects.create(name=‘mysql1‘)
# print(obj1.name)
# print(obj1.create_time)
# print(obj1.update_time)

#查询数据(获取字段信息的话查询出一条数据后.‘字段名‘)
# Category.objects.all()#查询全部
# #get方法只能返回一条数据
# obj_get = Category.objects.get(id=1)#获取一条数据 括号里是查询条件
# print(Category.objects.get(name=‘python‘))#获取一条数据 括号里是查询条件
# print(obj_get.name)

#filter返回符合条件的多条数据
# obj_filter = Category.objects.filter(id__gt=1)
# print(obj_filter)#返回一个list 如果取单个元素可以通过下标方式获取

# #exclude返回不符合条件的多条数据
# obj_exculde = Category.objects.exclude(id__gt=1)
# print(obj_exculde)#返回一个list 如果取单个元素可以通过下标方式获取
# obj_exculde.first()#取列表的第一个元素
# obj_exculde.last()#取列表的最后一个元素

#id__gt=1(id大于1)
#id__lt=1(id小于1)
#id__gte=1(id大于等于1)
#id__lte=1(id小于等于1)

# print(Category.objects.filter(name__startswith=‘l‘))#以l开头的
# print(Category.objects.filter(name__endswith=‘x‘))#以x结尾的

#name__ixxxxx与name__xxxx都是找包含‘xxxx‘的,只不过i不区分大小写
#以i开头的都是不区分大小写的
# print(Category.objects.filter(name__iendswith=‘e‘))
# print(Category.objects.filter(name__endswith=‘E‘))

#in 会查询出在list中的
# print(Category.objects.filter(name__in=[‘linux‘,‘db2‘]))

#or 查询 需要引用一下
# print(Category.objects.filter(Q(name=‘mysql‘)|Q(name=‘oracle‘)))

#修改(修改批量数据不需要save)
# Category.objects.update(dress=‘dog‘)#修改全表数据
# Category.objects.update(is_delete=True)#

#修改一条数据
# obj = Category.objects.get(name=‘首页‘)
# obj.dress = ‘cat‘
# obj.save()

#删除(删除批量数据不需要save)
# Category.objects.all().delete()#删除所有数据
# Category.objects.filter(name__in=[‘mysql‘,‘oracle‘]).delete()

#删除一条数据
# obj = Category.objects.get(name=‘mysql1‘)
# obj.delete()

#排序
# print(Category.objects.all().order_by(‘name‘))#升序
# print(Category.objects.all().order_by(‘-name‘))#降序