• django之 使用py文件操作django项目中的表


    要想在一个另外的py文件中操作django,可以使用如下的代码

    import os
    os.environ.setdefault("DJANGO_SETTINGS_MODULE",'mysite.settings')  #mysite用的是自己的project
    import django
    django.setup()
    
    from app01 import models  #app01是项目名

    基本操作

    方法 解释
    get() 获取指定条件的对象,在views.py里面有且只能有一个,否则报错
    all() 获取所有对象
    filter() 获取满足条件的所有对象 ---》对象列表
    exclude() 获取所有不满足条件的对象,也就是get()的取反
    values() 括号内有参数就是获取指定字段的结果,不写就是显示所有字段
    values_list() 区别于values,是以元组的形式来表示
    order_by() 以某个字段来排列,- 是以降序排列
    reverse() 对排列好的结果取反
    distinct() 去重 
    models.Book.objects.all().values("price").distinct()
    count() 计算结果的数量
    first() 取出满足条件的第一个结果
    last() 取出满足条件的最后一个结果
    exists() 判断结果是否存在
     delete()  删除记录
    models.Book.objects.filter(price__lte=100).delete()
     update()  修改记录
    models.Book.objects.filter(title__startswith="py").update(price=120)

    下面是举例:

    首先我们设置打印格式:

    class User(models.Model):
        id=models.AutoField(primary_key=True)
        name=models.CharField(max_length=32,db_column='user',verbose_name='姓名')
        age=models.IntegerField(verbose_name='年龄')
        birth=models.DateTimeField(auto_now=True,null=True)
    
        def __str__(self):
            return "<User:id-{}  name-{}>".format(self.id,self.name)
    
        class Meta:
            #数据库的表面修改,自定义
            db_table="user"
    
            #admin中显示的表名称
            verbose_name='个人信息'
    
            #在admin中Site administration显示
            verbose_name_plural='所有用户信息'

    下面是一些双下滑线的操作命令:

    __gt=     大于某个数

    __lt= 小于某个数

    __lte= 小于等于某个数

    __in=[] 在某些数字中

    __range=[1,3] 在一和三之间

    __contain= 包含

    __icontain= 包含忽略大小写

    __year= 某个时间字段中的年

    __startwith endswith 以什么开始,以什么结尾

    举例

    ret1=models.User.objects.filter(id__gt=1)
    # <QuerySet [<User: <User:id-2  name-he>>, <User: <User:id-3  name-ren>>, <User: <User:id-4  name-wo>>]>
    print(ret1)
    
    #查询在某个区间的结果,可以放入不在数据库里面的id
    ret2=models.User.objects.filter(id__in=[1,2,4,100])
    print(ret2)
    
    #查询在某个范围的结果
    ret3=models.User.objects.filter(id__range=[1,3])
    print(ret3)
    
    #包含
    ret4=models.User.objects.filter(name__contains='e')
    print(ret4)
    
    #忽略大小写,在sqlite数据库里面和contains是一样的,可以使用mysql验证
    ret5=models.User.objects.filter(name__icontains='e')
    print(ret5)
    
    #查询字段birth的时间中year是2018
    ret6=models.User.objects.filter(birth__year='2018')
    print(ret6)
  • 相关阅读:
    mybatis的注意事项一
    java代码操作word模板生成PDF文件
    使用mybatis框架实现带条件查询多条件(传入实体类)
    MyBatis框架ResultMap节点
    优化mybatis框架中的查询用户记录数的案例
    Mybatis框架联表查询显示问题解决
    使用mybatis框架实现带条件查询单条件
    [DB] 如何彻底卸载删除MySQL 【MYSQL】
    [DB] MySQL窗口输入密码后消失问题 【MYSQL】
    [acm] 曾经 刷题记录 [只有正确的坚持才是胜利]
  • 原文地址:https://www.cnblogs.com/mmyy-blog/p/9851786.html
Copyright © 2020-2023  润新知