2018-09-08-Python全栈开发day51-django-orm的增删改查

ORM是在django中操作数据库的一种方式,降低了新手操作数据库的难度,可以方便快速上手进行开发。

1==1

1==多

多==多

这三种操作模式的方法

在django的orm中,一张表就是自己定义的一个类,通过实例来生成表中的数据

django默认支持sqlite,mysql,oracle等数据库,在学习的时候,一般使用mysql数据库

首先在django的setting中修改数据库的类型

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'orm1',#数据库的名字
        'USER':'root',
        'PASSWORD':'ye125698',
        'HOST':'',
        'PORT':'3306'
    }
}

之后将musql和django进行连接,在应用的init文件中,插入

import pymysql
pymysql.install_as_MySQLdb()

 

 

1.单张表的增删改查操作

  添加

  

# book1=Book(name='python',price=18,pub_date='2018-11-20')
    # book1.save()
    Book.objects.create(name='python',price=18,pub_date='2018-11-20')

  修改字段

  

Book.objects.filter(name='python').update(price=188)
通过filter得到的是一个queryset集合,此集合有update方法,可以用来修改数据库的数据  



b=Book.objects.get(name='python')
    b.price='199'
    b.save()

get方法只能得到一个结果,如果结果中有多个,则会报错,而且get得到的结果没有update方法,只有通过save保存

  删除

Book.objects.filter(name='python').delete()

通过filter找到queryset集合,然后使用delete方式进行删除

  查询

  

b=Book.objects.all()
这里得到的只是这个集合对象,
在model的类中进行设置,当打印self的时候,输出self.name
所以在这里打印b的话,可以直接显示对应的书名

  first和last

  

b=Book.objects.all()[:2]==进行切片操作,和字符串相同
b = Book.objects.first()。得到的不是jqueryset集合,只是一个对象

  filter

  可以用filter进行筛选

  

b = Book.objects.get(id=9)
    b=Book.objects.filter(id=9)



使用fliter得到的适合集合,输出的是键值对形式的
get得到的是个对象,输出的只是一个name

  values

  可以通过values限制显示的标题

  

b = Book.objects.filter(id=9).values('price')


filter作为搜索条件,value作为检索结果,这里返回的结果是集合

  values_list

  

b = Book.objects.filter(id=9).values_list('price')
返回的是个列表,里面是price的值作为元组形式

  exclude

  

b = Book.objects.exclude(id=9).values_list('price')

搜索条件中是除了。。之外

  order by

  

b=Book.objects.all().order_by('price').all()

order也是作为一种筛选条件,
还有reverse作为反向排序

  count

  对结果进行计数

  

b=Book.objects.all().count()

模糊查找双下划线

  

大于    b=Book.objects.filter(price__gt=18).values('id')
小于__LT
包含contains
在。。内  in
范围 range

 

 

  

 

 

 

 

  一张表的字段对应另外一张表的一个字段,通过外键约束起来,其中有主表和字表

  

  

posted @ 2018-09-08 16:09  brownbearye  阅读(174)  评论(0)    收藏  举报