• django基础——数据库的增删改查


    import django,os
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_Test.settings')  #指定django的配置文件
    django.setup()   #链接数据库
    from user import models
    from django.db.models import Q   #查询all,必须引进Q
    #新增数据的两种方法
    # models.Nav.objects.create(name='我的日记1')
    # models.Nav.objects.create(name='我的日记2')
    # nav_obj=models.Nav(name='我的心情',is_delete=1)
    # nav_obj.save()
    
    #查询
    # 1.get:get方法查询时必须保证结果只有一条,否则会报错
    # result=models.Nav.objects.get(name='我的心情') # result3=models.Nav.objects.get(is_delete=1) # result2=models.Nav.objects.get(id=1) # print(type(result)) #是一个类 # print(result2) # print(result.id) # print(result.update_time) #查询到对应的结果 # print(result3) 结果有多条时报错 #查询2 filter,可以查多条 # result1=models.Nav.objects.filter(is_delete=1) # result=models.Nav.objects.filter(is_delete=1,name='我的心情') #多重条件时 ,相当于and # result2=models.Nav.objects.filter(name__contains='我的',id__gt=0) #字段名__contains:模糊查询,id__gt=0:id字段>0, # #id_gte=1:大于等于1,id_lt=1:小于1,id_lt=lte:小于等于1 # result3=models.Nav.objects.filter(is_delete__range=[1,5]) #查询一个字段在某个范围之间的数据 # result4=models.Nav.objects.filter(id__in=[1,2,3,4,5]) #in条件查询 # result4=models.Nav.objects.filter(id__in=[1,2,3,4,5]) .count()统计数量 # result5=models.Nav.objects.exclude(id=1) #除了id=1的都查询出来,exclude排除 # print(result) # print(result2) # print(result3) # print(result4) # print(result5) result6=models.Nav.objects.filter(Q(name__contains='6')|Q(name__contains='3')) #or 查询,使用前要先导入Q print(result6) all=models.Nav.objects.all() #获取表里所有数据 all2=models.Nav.objects.all().filter(name__contains='6') #可以在结果中继续筛选,可无限筛选下去 #修改 # n=models.Nav.objects.get(is_delete=1) #找到这条元素 get(pk=1):查找主键=1 # n.img='article/1.jpg' #修改数据 # n.save() #修改完保存 # models.Nav.objects.all().update(is_delete=0) #更新表里所有数据 models.Article.objects.filter(is_delete=1).update(img='article_img/1.jpg') #根据条件更改数据 # 删除 # models.Nav.objects.all().delete() #删除表里所有数据 # models.Nav.objects.filter(id__lt=3).delete() #根据条件删除数据 # n=models.Nav.objects.get(id=3) #parimy key 单个删除 # n.delete() models.Article.objects.create(title='django教程',content='django教程111',nav_id=8) models.Article.objects.create(title='django教程',content='django教程111',nav_id=9) models.Article.objects.create(title='django教程',content='django教程111',nav_id=10) models.Article.objects.create(title='django教程',content='django教程111',nav_id=11) models.Article.objects.create(title='django教程',content='django教程111',nav_id=12) models.Article.objects.create(title='django教程',content='django教程111',nav_id=13) # # 同上: # nav=models.Nav.objects.get(name='我的日记5') # models.Article.objects.create(title='django教程',content='django教程111',nav_id=7)

     数据变更不需要执行生效的命令。

    多表查询:

    # 最原始的连表查询
    nav=models.Nav.objects.get(name='我的日记3')
    result=models.Article.objects.filter(nav_id=nav.id)
    print(result)
    
    
    # 外键连表查询:
    # nav=models.Nav.objects.get(name='我的日记10')
    # result=nav.article_set.all()   #获取导航下的所有文章,前提是要关联外键
    # print(result)
    #
    # art=models.Article.objects.get(id=5)
    # print(art)
  • 相关阅读:
    VS2010 Extension实践(3)——实现自定义配置
    VS2010 Extension实践(2)
    WinRT开发系列之基础概念:WinRT不是……
    [VS2010 Extension]PowerExtension.GoToDefinition
    如何通过反射调用带有ref或者out的参数的方法[迁移]
    Win7硬盘安装和移动硬盘访问出错的修复办法[迁移]
    zt. Windows Mobile开发文章收藏
    WinRT开发系列之编程语言:功能和效率
    VS2010 Extension实践
    maven创建父子工程
  • 原文地址:https://www.cnblogs.com/hancece/p/11721498.html
Copyright © 2020-2023  润新知