☆Django☆---orm 字段 数据库查询优化 事务

☆Django☆---orm 字段 数据库查询优化 事务,第1张

概述昨日内容回顾 模型层 单表 *** 作 1.增 user_obj = models.User.objects.create() user_obj = models.User() user_obj.save()

昨日内容回顾    模型层        单表 *** 作            1.增                user_obj = models.User.objects.create()                                user_obj = models.User()                user_obj.save()            2.改                models.User.objects.filter().update()                                user_obj = models.User.objects.filter().first()                user_obj.username = jason                user_obj.save()                        3.查                models.User.objects.filter()                models.User.objects.all()                models.User.objects.get()                        4.删                models.User.objects.filter().delete()                                user_obj = models.User.objects.filter().first()                user_obj.delete()                        13条查询方法                all()                filter()                get()                values()  # 列表套字典                values_List()  # 列表套元组                first()                last()                count()                exclude()                distinct()                order_by()                exists()                reverse()        神奇的双下划綫查询            价格大于 小于 大于等于  小于等于   在什么之间  或好几个选择            price__gt            price__lt            price__gte            price__lte            price__in            price__range                    书籍名称中包含                Title__contains=p                Title__icontains=p                        创建的年份                create_time__year                        多表 *** 作            外键字段的增删改查                一对多                        publish_ID = 1                        publish = publish_obj                                    多对多                    add()                    set()                    remove()                    # 上面三个都支持 传数字或者是对象 并且都可以传多个                    # 但是set必须接受一个可迭代对象                                        clear()                    # 不需要传参数  直接清空所有关系                                    跨表查询                    规律:只要是queryset对象 就可以无限制的点queryset的方法!!!                    正方向概念                        正向:关联字段在当前表中                        反向:关联字段不再当前表                    结论:正向查询按字段,反向查询按表名小写                    """                    不要一次性把orm写完,写一点看一点                    """                    # 基于对象的跨表查询(子查询)                        # 一次只拿一个对象 然后利用对象点的 *** 作 完成数据的查询                        # 正向                        book_obj.publish.name                                                book_obj.authors  # App01.Author.None                        book_obj.authors.all()                         author_obj.author_detail.phone                                                # 反向                        """反向表名小写什么时候需要加_set(当获取的是多个对象的饿时候)"""                        publish_obj.book_set  # App01.Book.None                        publish_obj.book_set.all()                        author_obj.book_set  # App01.Book.None                        author_obj.book_set.all()                                                  author_detail_obj.author.name                    # 基于双下划綫的跨表查询(连表查询)                        models.Book.objects.filter().values(publish__name)                        models.Publish.objects.filter(book__Title=).values(name)                                                models.Book.objects.filter().values(authors__author_detail__phone)                        # 只要表中有外键字段 你可以通过__无限制的跨表                                F与Q            F查询            从数据库中获取字段对应的数据            库存数大于卖出数                                    Q查询                与                     filter(Q(),Q())                    filter(Q()&Q())                或                    filter(Q()|Q())                非                    filter(~Q())                                    补充                    q = Q()                    q.connector = or                    q.children.append((Title,))                    q.children.append((price,666))                    models.Book.objects.filter(q)                        
内容复习 Django ORM 常用字段和参数 常用字段 autoFIEld

int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为ID的列。

IntegerFIEld

一个整数类型,范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够),直接用字符串存,)

CharFIEld(在MysqL中是 varchar类型 且django中没有 char字段 需要自己定义)

字符类型,必须提供max_length参数, max_length表示字符长度。

在django中如何定字段? 技巧:大部分设计到数据库的 模块都是 django.db import models(****)

 

DateFIEld 和 DateTimeFIEld  以及他们的参数 auto_Now_add ----添加一次

配置auto_Now_add=True,创建数据记录的时候会把当前时间添加到数据库。

auto_Now --- 修改就改

配置上auto_Now=True,每次更新数据记录的时候会更新该字段。

字段参数 null   例子: null=Ture

用于表示某个字段可以为空。

unique    例子 unique = True  其他知识点:外键字段的一对一 可以不用Foreignkey直接就是 unique

如果设置为unique=True 则该字段在此表中必须是唯一的 。

db_index

如果db_index=True 则代表着为此字段设置索引。

default

为该字段设置默认值。

其他需要了解的字段 @H_404_281@

from django.db import models# Create your models here.#Django中没有对应的char类型字段,但是我们可以自己创建class FixCharFIEld(models.FIEld):    ‘‘‘    自定义的char类型的字段类    ‘‘‘    def __init__(self,max_length,*args,**kwargs):        self.max_length=max_length        super().__init__(max_length=max_length,**kwargs)    def db_type(self,connection):        ‘‘‘        限定生成的数据库表字段类型char,长度为max_length指定的值        :param connection:        :return:        ‘‘‘        return char(%s)%self.max_length#应用上面自定义的char类型class Class(models.Model):    ID=models.autoFIEld(primary_key=True)    Title=models.CharFIEld(max_length=32)    class_name=FixCharFIEld(max_length=16)    gender_choice=((1,),(2,),(3,保密))    gender=models.SmallintegerFIEld(choices=gender_choice,default=3)自定义及使用
了解字段

 

关系字段以及他的参数 ForeignKey 字段参数 to

设置要关联的表

to_fIEld

设置要关联的表的字段

on_delete

当删除关联表中的数据时,当前表与其关联的行的行为。

models.CASCADE

删除关联数据,与之关联也删除

db_constraint

是否在数据库中创建外键约束,默认为True。

 

外键字段
  当你在使用django2.X版本的时候 在建立外键关系时(*****)
  需要你手动添加几个关键点参数
  models.cascade
  db_constraints 数据库查询优化 only与defer   select_releated与prefect_releated

orm内所有的语句 *** 作 都是惰性查询:只会在你真正需要数据的时候才会走数据库,如果你单单只写orm语句时不会走数据库的
这样设计的好处 在于 减轻数据库的压力

 

 

 

 

 

 

 

 

 

 

 

 

 

 

总结

以上是内存溢出为你收集整理的☆Django☆---orm 字段 数据库查询优化 事务全部内容,希望文章能够帮你解决☆Django☆---orm 字段 数据库查询优化 事务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1191171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存