Django项目框架介绍007--数据库操作
一.数据类型

二.数据选项说明

三.创建表,在models.py文件下进行设计数据库表结构

class Article(models.Model):
title=models.CharField(max_length=30,verbose_name='文章标题')
content=models.TextField(null=True,verbose_name='文章内容')
#ImageField类型必须安装pillow模板,图片类型必须upload_to进行指定图书上传目录,需在settings文件中配置MEDIA_ROOT=os.path.join(BASE_DIR,'static','article_img')
img=models.ImageField(upload_to='article_img',null=True,verbose_name='文章图片')
nav=models.ForeignKey(Nav,on_delete=models.DO_NOTHING,verbose_name='导航id',db_constraint=False)#外键,db_constraint不会真正建立外键关系,但是有外键功能
is_delete = models.SmallIntegerField(default=1, verbose_name='是否删除')
create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True) # auto_now_add往数据库插入数据时自动取当前时间
update_time = models.DateTimeField(verbose_name='更新时间', auto_now=True) # auto_now更新数据时自动取当前时间
def __str__(self):
return self.title
class Meta:
verbose_name='文章表'
verbose_name_plural=verbose_name
db_table='article'
四.同步表结构,同步表结构时需要检查setting配置文件中INSTALLED_APPS是否加入了该数据库的应用,若是没有加入的话通过python manage.py makemigrations时无法正常进行迁移数据库表结构

加上的话则正常进行迁移数据库表结构

再然后通过python manage.py migrate进行创建数据库

五.数据库增删改查
前面数据库创建成功后可以通过创建一个python文件直接运行对数据库进行增删改查,如下图

a).新增
#新增操作有两种方式,通过create方法进行新增,通过类实例化进行新增
models.Nav.objects.create(name='我的日记')
nav_obj=models.Nav(name='我的心情',is_delete=1)
nav_obj.save()


b).查询
#查询
result=models.Nav.objects.get(id=1)#使用get方法查询数据时必须要保证查询出来有1条数据,不然会报错,查询出来的结果是类类型的对象
print(result.name,type(result))
#查询所有数据,filter()不加任何条件可以查询所有数据,all()也是查询所有数据
result2=models.Nav.objects.filter()
print(result2)
print(models.Nav.objects.all())#查询所有数据
#filter(id=1)加条件可以通过条件进行查询
result1=models.Nav.objects.filter(is_delete=1)#使用filter进行查询,查询出来的结果类型是QuerySet类型
print(result1,type(result1))
print(result1[0].name)
print(result1[1].update_time)
#多个条件进行查询and,通过逗号隔开
result3=models.Nav.objects.filter(name='我的日记',is_delete=1).first()
print(result3.name)
#多个条件进行查询or,通过使用Q进行查询,使用Q需要先通过from django.db.models improt Q进行导入
result5=models.Nav.objects.filter(Q(name__contains='3')|Q(name__contains='5'))
print(result5)
#模糊查询like,通过__contains
result4=models.Nav.objects.filter(name__contains='我的')
print(result4)
#__gt大于、__gte大于等于、__lt小于、__lte小于等于、exclude不等于、__in在里面、__range在范围区间
re1=models.Nav.objects.filter(id__gt=1)#id大于0
print(re1)
re2=models.Nav.objects.filter(id__gte=2)#id大于等于1
print(re2)
re3=models.Nav.objects.filter(id__lt=2)#id小于1
print(re3)
re4=models.Nav.objects.filter(id__lte=1)#id小于等于0
print(re4)
re5=models.Nav.objects.exclude(id=1)#除了id不等于1的数据
print(re5)
re6=models.Nav.objects.filter(id__in=[1,2])#在里面
print(re6)
re7=models.Nav.objects.filter(id__range=[1,3])#在范围区间内
print(re7)
c).修改
#修改
re8=models.Nav.objects.get(id=1)
re8.name='WO的相册2'
re8.is_delete=1
re8.save()
models.Nav.objects.all().update(is_delete=0)
models.Nav.objects.filter(is_delete=0).update(is_delete=1)
re9=models.Nav.objects.filter(id=1)
re9.update(is_delete=0)
d).删除
#删除
n=models.Nav.objects.get(id=3).delete()#根据条件进行单个删除
models.Nav.objects.filter(id__lt=3).delete()#根据条件进行删除
models.Nav.objects.all().delete()#全部删除
六.
七.
八.

浙公网安备 33010602011771号