zoukankan      html  css  js  c++  java
  • django中的models模块及数据库一些基本操作

    使用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(生成表结构)

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

    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'))#降序

     

  • 相关阅读:
    Apache ab压力测试
    2、Android自动测试之Monkey工具
    1、Monkey环境搭建
    解决IDEA中,maven依赖不自动补全的问题
    Centos7解决在同一局域网内无法使用ssh连接
    sql草稿
    mysql三表联合查询,结果集合并
    vue:父子组件间通信,父组件调用子组件方法进行校验子组件的表单
    vue:使用不同参数跳转同一组件,实现动态加载图片和数据,以及利用localStorage和vuex持久化数据
    vue:解决使用param传参后,再次刷新页面会新增一个原有的tab
  • 原文地址:https://www.cnblogs.com/mhmh007/p/12091883.html
Copyright © 2011-2022 走看看