• Django数据库操作


    刚学到Django的数据库操作,把它记录下来,方便以后查看:

    在Django中定义数据库表,并使用Django提供的方法来对数据库进行操作(增、删、改、查)

    1、定义3个数据库表:
     1 class Group(models.Model):
     2     name = models.CharField(max_length=50,default=None)
     3 
     4 class User(models.Model):
     5     name = models.CharField(max_length=50,default=None)
     6     Email = models.CharField(max_length=50,default=None)
     7 
     8     group_relation = models.ManyToManyField('Group',default=None)   #生成多对多表
     9 
    10 class Asset(models.Model):
    11     hostname = models.CharField(max_length=50,default=None)
    12     create_date = models.DateTimeField(auto_now_add=True)
    13     update_date = models.DateTimeField(auto_now=True)

    2、向数据库中添加内容
    1 Asset.objects.create(hostname=name)
    2 
    3 #多对多添加数据
    4 u1 = User.objects.filter(id=1)
    5 g1 = Group.objects.filter(id=1)
    6 u1.group_relation.add(g1)
    7 g1.user_set.add(u1)

    3、从数据库中删除内容
    1     Asset.objects.get(id=id).delete()
    2 
    3     # 多对多删除数据
    4     u1 = User.objects.filter(id=1)
    5     g1 = Group.objects.filter(id=1)
    6     u1.group_relation.delete(g1)
    7     g1.user_set.delete(u1)

    4、修改数据库中的内容
    1     #根据id修改hostname
    2     obj = Asset.objects.get(id=id)
    3     obj.hostname=hostname
    4     obj.save()
    5 
    6     #所有id大于传入参数的,就将hostname修改
    7     Asset.objects.filter(id__gt=id).update(hostname=hostname)

    5、查询数据库中的内容
     1     # 多对多获取数据
     2     u1 = User.objects.filter(id=1)
     3     g1 = Group.objects.filter(id=1)
     4     u1.group_relation.all()
     5     u1.group_relation.all().filter(id=1)
     6     g1.user_set.all()
     7     g1.user_set.all().filter(email='')
     8 
     9     #查找所有id大于传入参数的数据
    10     Asset.objects.filter(id__gt=id)
    11     #查找所有hostname包含传入参数的数据
    12     Asset.objects.filter(hostname__contains=hostname)
    13     #查找类型id等于5的所有用户信息---type__id:type表示UserInfo表中的type字段(对应type表的外键),__id表示与userinfo表相关联的type表的id
    14     UserIfo.objects.filter(type__id = 5)
    15     #取出所有数据
    16     Asset.objects.all()
    17     #取出所有数据的前两条数据
    18     Asset.objects.all()[0:2]
    19     # 取出所有数据,并进行排序---id:按id正序排列,倒序就用'-id'
    20     Asset.objects.all().order_by('id')
    21     # 取出所有数据中的id和hostname列数据
    22     Asset.objects.all().values('id','hostname')


  • 相关阅读:
    Executors提供的四种线程池和自定义线程池
    ava8并发教程:Threads和Executors
    Java 信号量 Semaphore 介绍
    Condition-线程通信更高效的方式
    ReentrantLock详解 以及与synchronized的区别
    FutureTask 源码解析
    Java多线程编程:Callable、Future和FutureTask浅析
    Callable 和 Runnable 的区别
    javascript之url转义escape()、encodeURI()和decodeURI()
    yii2.0安装ElasticSearch及使用
  • 原文地址:https://www.cnblogs.com/MacoLee/p/5603898.html
Copyright © 2020-2023  润新知