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
一张表的字段对应另外一张表的一个字段,通过外键约束起来,其中有主表和字表

浙公网安备 33010602011771号