python之django框架中的 数据库总结

一. 字段类型


            1、BooleanField()
            2、CharField()
            3、DateField()
            4、DateTimeField()
            5、DecimalField()
            6、EmailField() #存电子邮件 - varchar
            7、FloatField()
            8、ImageField() #存图片路径 - varchar
                ImageField(upload_to='static/***/***')
            9、IntergerField()
            10、URLField()
            11、TextField() #存大量文本数据 - text

二 . 字段选项(Field Option)


            1、max_length
                指定数据的最大长度
                在CharField()必须要设置的选项
            2、default
                为当前字段指定默认值
            3、null
                指定当前字段是否允许为空,默认值是 false

三. 数据库的同步操作

    1.  python ./manage.py makemigrations

      作用:将每个应用下的 models.py 文件生成一个数据库的中间文件,并保存在migrations目录中(制造迁移)

    2、python ./manage.py migrate
            作用:将每个应用下的 migrations 目录中的中间文件同步到数据库中

四、编写Models


        1、注意
            1、Models中的每个class都称为 模型类(Model类),实体类(Entry/Entity)
            2、Models中的每个模型类,必须继承自 models.Model

        2、编写模型类
            from django.db import models

            class Entry(models.Model):
                属性1 = models.字段类型(字段选项)

模型文件编写完成就可以执行  makemigrations / migrate文件 

五. 模型中的 CRUD

1.  Entry.objects.create(属性=值,属性=值)

                     Entry :具体要操作的的Model类

ef add_views(request):
    TestUser.objects.create(name='鲁迅', age=18)
    return HttpResponse("addOK")

2. 创建一个Models 对象,通过对象的save() 完成增加

obj = TestUser(name='xifang', age = 22)

obj.save()

def add_views(request):
    # 第一种方式
    # TestUser.objects.create(name='鲁迅', age=18)
    # 第二种方式
    obj = TestUser(name='xifang', age=22)
    obj.save()
    return HttpResponse("addOK")

3. 通过字典构建对象,由 save()完成增加

dic = { 

     '属性1': '值1',

     '属性2':'值2',

.....

}

obj = Entry(**dic)

obj.save()

def add_views(request): 
# 第三种方式
    dic = {
        'name':'Jony',
        'age':19,
    }
    obj = TestUser(**dic)
    obj.save()
    return HttpResponse("addOK")

     4. 通过Entry.objects 调用查询接口

      Entry.objects.all()

等同于 select * from...

def query_views(request):
    auList = TestUser.objects.all()
    for au in auList:
        print(au.name ,",", au.age)
    return HttpResponse('Query ok')

5. 查询指定列

语法: values('列1', '列2', .....)

用法 :Entry.objects.values('列1','列2',......)

例:

python之django框架中的 数据库总结_第1张图片

 注意: value() 可以用在所有的返回查询结果集的方法后面

TestUser.objects.all().values('name','age')

 3 .values_list()

返回的是一个元祖

TestUser.objects.values_list('name','age')

返回值:

 排序函数

order_by()

age_list = TestUser.objects.all().order_by('age')
    for a in age_list:
        print(a.age, ',', a.name)

注意:

这种写法:也是可以

age_list = TestUser.objects.order_by('age')

如果是降序排列  在字段名前面加'-'

例如;

age_list = TestUser.objects.all().order_by('-age')

 对条件取反

exclude()

用法: Entry.objects.exclude(条件)

相当于 select * from testuser where not (age = 18 and id =3);

auList = TestUser.objects.exclude(age=18,id=3)
    for a in auList:
        print(a.age,',', a.id,',', a.name)
auList = TestUser.objects.exclude(id=3)

相当于:  select * from testuser where not ( id =3);

1. filter(参数)

用法: Entry.objects.filter(参数)

2. Field Lookup(查询表达式) 完成复杂的条件查询

      例:           

TestUser.objects.filter(id__exact=5)
test = TestUser.objects.filter(id__exact=5)
    for te in test:
        print(te.name)

"__" 前面填写字段名

参数 作用
__exact 精确查询,等值判断
__contains 筛选出属性中包含指定关键字的记录(模糊查询)
__lt 筛选出属性值小于指定值的记录
__gt 不区分大小写的完全匹配
__lte 筛选出属性值大于指定值的记录
__gte 筛选出属性值大于等于指定值的记录
__startswith 筛选出以指定关键字开始的记录
__endswith 筛选出以指定关键结尾的记录

你可能感兴趣的:(个人总结,Python学习笔记,python,django)