zoukankan      html  css  js  c++  java
  • Django之mysql表单操作

      在Django之ORM模型中总结过django下mysql表的创建操作,接下来总结mysql表记录操作,包括表记录的增、删、改、查。

    1. 添加表记录

    class UserInfo(models.Model):
        user = models.CharField(max_length=16)
        pwd = models.CharField(max_length=32)

      对于表单的添加有三种方式:

    #方法1
    obj= models.UserInfo(user="zhangsan",pwd="888888")
    obj.save()
    #方法二:
    dic = {"user":"zhangsan", "pwd":"888888"}
    modles.UserInfo.objects.create(**dic)
    # 方式三:
    models.Student.objects.create(user="shangsan", pwd="888888")

    2. 删除表记录

      models.UserInfo.objects.filters(user="zhangsan").delete()

    3. 修改表记录

      models.UserInfo.objects.filter(user="password").update(pwd="666666")

      或

      obj = models.UserInfo.objects.get(user="zhangsan")

      obj.pwd= "666666"

      obj.save

      注意这使用的是get(),get()如果找不到就会报错,如果有多个值也会报错,只能拿一个值

    4. 查询表记录

    4.1 查询相关的API

    (1)all()

      models.UserInfo.objects.all()   // 获得所有

      >>>> <QuerySet [<UserInfo: UserInfo object (1)>]>

    (2)filter()

      可以实现且关系,但是或关系需要借助Q查询实现,查不到的时候不会报错

      models.UserInfo.objects.filter(user="zhangsan")

      models.UserInfo.objects.filter(user="zhangsan",pwd="888888")

    print(models.UserInfo.objects.filter(user="zhangsan").values())
    >>>> <QuerySet [{'id': 2, 'user': 'zhangsan', 'pwd': '888888'}]>
    print(models.UserInfo.objects.filter(user="zhangsan").values()[0]["pwd"])
    >>>> 888888

    (3)get()

      如果找不到会报错,如果有多个值也会报错,只能获得有一个值的

      models.UserInfo.objects.get(user="zhangsan")

      models.UserInfo.objects.get(user="zhangsan",pwd="888888")

    print(models.UserInfo.objects.get(user="zhangsan"))
    UserInfo object (2)

    (4)exclude()

      排除条件,查看除了()的其他信息

      models.UserInfo.objects.exclude(user="zhangsan")

    (5)values()

      返回QuerySet对象,把对象转换为字典的形式

    print(models.UserInfo.objects.filter(user="zhangsan").values("user"))
    >>>> <QuerySet [{'user': 'zhangsan'}]>
    print(models.UserInfo.objects.filter(user="zhangsan").values("user", "pwd"))
    <QuerySet [{'user': 'zhangsan', 'pwd': '888888'}]>

    (6)values_list()

      返回QuerySet对象,把对象转换为元祖的形式

    print(models.UserInfo.objects.filter(user="zhangsan").values_list())
    >>>> <QuerySet [(2, 'zhangsan', '888888')]>

    (7)order_by()

      排序

    models.UserInfo.objects.all().order_by("user")

     (8)reverse()

      反序

      models.UserInfo.objects.all().reverse()

    (9)distinct()

      去重

      models.UserInfo.objects.filter(user="zhangsan").values("user").distinct()

    (10)count()

      数量

    (11)first()

    (12)last()

    (13)exists()

      查看有没有记录,如果有就返回True,没有则返回False,并不需要判断所有的数据

    4.2 双下划线之表单查询

      看下面的例子后应该就很清除了

    models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id小于1 且 大于10的值
     
    models.Tb1.objects.filter(id__in=[11, 22, 33])   # 获取id等于11、22、33的数据
    models.Tb1.objects.exclude(id__in=[11, 22, 33])  # not in
     
    models.Tb1.objects.filter(name__contains="ven")  #包括ven的
    models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
     
    models.Tb1.objects.filter(id__range=[1, 2])      # 范围bettwen and
     
    startswith,istartswith, endswith, iendswith 
  • 相关阅读:
    网络抓包工具使用
    JAVA 原子操作类
    guava collection/cache初探
    MiniGUI
    Cookie
    System V IPC
    SQLite交叉编译
    NCurses交叉编译
    双向循环链表
    VMware安装Windows Server 2008
  • 原文地址:https://www.cnblogs.com/xiaobingqianrui/p/9900965.html
Copyright © 2011-2022 走看看