查询数据
- 数据库的查询需要使用管理器对象进行
- 通过 MyModel.objects 管理器方法调用查询接口
方法 说明 all() 查询全部记录,返回QuerySet查询对象 get() 查询符合条件的单一记录 filter() 查询符合条件的多条记录 exclude() 查询符合条件之外的全部记录 …
-
all()方法
-方法: all()
-用法: MyModel.objects.all()
-作用: 查询MyModel实体中所有的数据
等同于
- select * from tabel
-返回值: QuerySet容器对象,内部存放 MyModel 实例
-示例:from bookstore import models books = models.Book.objects.all() for book in books: print("书名", book.title, '出版社:', book.pub) ```
-
在模型类中定义
def __str__(self):
方法可以将自定义默认的字符串class Book(models.Model): title = ... def __str__(self): return "书名: %s, 出版社: %s, 定价: %s" % (self.title, self.pub, self.price)
-
查询返回指定列(字典表示)
-方法: values(‘列1’, ‘列2’)
-用法: MyModel.objects.values(…)
作用: 查询部分列的数据并返回select 列1,列2 from xxx
-返回值: QuerySet
-返回查询结果容器,容器内存字典,每个字典代表一条数据,
-格式为: {‘列1’: 值1, ‘列2’: 值2}- 示例:
from bookstore import models books = models.Book.objects.values("title", "pub") for book in books: print("书名", book["title"], '出版社:', book['pub']) print("book=", book)
- 示例:
-
查询返回指定列(元组表示)
-方法:values_list(‘列1’,‘列2’)
-用法:MyModel.objects.values_list(…)
-作用:- 返回元组形式的查询结果
-返回值: QuerySet容器对象,内部存放
元组
- 会将查询出来的数据封装到元组中,再封装到查询集合QuerySet中
- 示例:
from bookstore import models books = models.Book.objects.values_list("title", "pub") for book in books: print("book=", book) # ('Python', '清华大学出版社')... print(book[0])
- 示例:
-
排序查询
-方法:order_by
-用法:MyModel.objects.order_by(’-列’,‘列’)
-作用:- 与all()方法不同,它会用SQL 语句的ORDER BY 子句对查询结果进行根据某个字段选择性的进行排序
-说明:
-默认是按照升序排序,降序排序则需要在列前增加’-'表示
- 示例:
from bookstore import models books = models.Book.objects.order_by("-price") for book in books: print("书名:", book.title, '定价:', book.price)
- 示例:
-
根据条件查询多条记录
- 方法: filter(条件)
- 语法:
MyModel.objects.filter