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

     

  • 相关阅读:
    Corn Fields 状压动归入门题
    codevs 2800 送外卖 floyd + Tsp
    互不侵犯 状压动归入门题
    跨终端电商平台的实现之手势效果(左右滑动)
    nodejs和树莓派开发以及点亮RGB的LED灯代码
    基于vue-cli搭了一个多页面应用的空脚手架
    About HTML
    【译】遗留浏览器中的表单
    Vue2的右键弹出菜单(vue-contextmenu)
    IMWEB 前端面试题汇总
  • 原文地址:https://www.cnblogs.com/mhmh007/p/12091883.html
Copyright © 2011-2022 走看看