ORM:
Python语法 sql
类 表
属性 字段
对象 表记录
一 如何创建表
在models.py:
class Food(models.Model):
title=models.CharField(max_length=32)
执行数据库迁移命令:
1 Python manage.py makemigrations
2 python manage.py migrate
注意:必须在settings中的INSTALLED_APPS 注册models所在的app
二 对于表记录增删改查
class Book(models.Model):
nid=models.AutoField(primary_key=True)
title=models.CharField(max_length=32)
price=models.DecimalField(max_digits=8,decimal_places=2) # 999999.99
pub_date=models.DateTimeField() # "2012-12-12"
publish=models.CharField(max_length=32)
1 添加记录
# 方式1:
book=Book(title="python",price=123,pub_date="2012-12-12",publish="人民出版社")
book.save()
# 方式2:
book=Book.objects.create(title="python",price=123,pub_date="2012-12-12",publish="人民出版社")
print(book.title)
2 查询记录
book_list=Book.objects.all() # [book1,book2,book3]
book_list=Book.objects.filter(price=100) # [book1,book2,book3]
3 删除记录
Book.objects.filter(price=100).delete()
4 修改记录
Book.objects.filter(nid=edit_book_id).update(price=111)
Book.objects.filter(price=111).update(publish="南京出版社")
三 图书管理系统的请求流程给1汽车、kj
(1)查看书籍:
请求url :http://127.0.0.1:8000/books/
请求方式:GET
django的urls.py:
path('books/', views.books,name="books"),
执行books(request):
1 查询所有书籍
2 将查询的queryset数据传入模板,render渲染出一个books页面
3 返回给浏览器
用户此时可以看到书籍的查看页面
(2) 添加书籍
请求url :http://127.0.0.1:8000/books/add/
请求方式:GET
django的urls.py:
path('books/add/', views.addbook),
执行addbook(request):
if GET请求:
返回给浏览器一个提交书籍的表单页面
用户此时可以看到书籍的添加页面
################
用户输入数据,点击提交
请求url :http://127.0.0.1:8000/books/add/
请求方式:POST
django的urls.py:
path('books/add/', views.addbook),
执行addbook(request):
if GET请求:
返回给浏览器一个提交书籍的表单页面
用户此时可以看到书籍的添加页面
else:
获取用户提交的数据,向数据库中添加一本书籍
返回一个重定向:/books/
################
浏览器接收到重定向的响应:再发请求
请求url :http://127.0.0.1:8000/books/
请求方式:GET
django的urls.py:
path('books/', views.books,name="books"),
执行books(request):
1 查询所有书籍 (此时查询的书籍包含刚刚添加的书籍)
2 将查询的queryset数据传入模板,render渲染出一个books页面
3 返回给浏览器
用户此时可以看到书籍的查看页面
(3) 删除请求
请求url :http://127.0.0.1:8000/books/delete/5
请求方式:GET
django的urls.py:
re_path('books/delete/(\d+)', views.delbook,name="books"),
执行delbook(request,5):
1 查询主键为5的书籍删除
2 返回一个重定向:/books/
################
浏览器接收到重定向的响应:再发请求
请求url :http://127.0.0.1:8000/books/
请求方式:GET
django的urls.py:
path('books/', views.books,name="books"),
执行books(request):
1 查询所有书籍 (此时查询的书籍没有刚刚删除的书籍)
2 将查询的queryset数据传入模板,render渲染出一个books页面
3 返回给浏览器
用户此时可以看到书籍的查看页面
单表查询:
查询API:
queryset
(1) all() : 调用者:objects管理器 返回queryset
(2) filter() :调用者:objects管理器 返回queryset
(3) get方法():调用者:objects管理器 返回查询到model对象 (注意:查询结果有且只有一个才执行)
(4) first(),last()方法:调用者:queryset 返回model对象
(5) exclude():调用者:objects管理器 返回queryset
(6) order_by():由queryset对象调用,返回值是queryset
(7) count :数数 :由queryset对象调用 返回int
(8) reverse():由queryset对象调用,返回值是queryset
(9) exists(): 由queryset对象调用 返回值布尔值
(10)values()方法: 由queryset对象调用,返回值是queryset
(11)values_list():由queryset对象调用,返回值是queryset
(12)distinct(): 由queryset对象调用,返回值是queryset
模糊查询(双下划线)
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__gt=100)
Book.objects.filter(price__lt=100)
Book.objects.filter(price__range=[100,200])
Book.objects.filter(title__contains="python")
Book.objects.filter(title__icontains="python")
Book.objects.filter(title__startswith="py")
Book.objects.filter(pub_date__year=2012)
https://www.cnblogs.com/yuanchenqi/articles/8963244.html
https://www.cnblogs.com/sss4/p/7070942.html orm一片不错的博客 链接