python-queryset特点

表中数据:
image
我们需要在app中的tests.py中加入一下几行代码,才能在中间写orm语句:

import os
import sys

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'newproject.settings')
    import django
    django.setup()
... '''写orm语句,可以直接右键运行'''
main()

不做任何操作的数据:

res = models.Book.objects.all()
print(res)  # <QuerySet [<Book: Book object (1)>, <Book: Book object (2)>, <Book: Book object (3)>, <Book: Book object (4)>, <Book: Book object (5)>]>

特点1:支持索引(不支持负索引):

res = models.Book.objects.all()
print(res[0:2])  # <QuerySet [<Book: Book object (1)>, <Book: Book object (2)>]>

特点2:可迭代:

    res = models.Book.objects.all()
    for i in res:
        print(i.name)
'''
红楼梦 西游记 三国演义 水浒传 骆驼祥子
'''

特点3:查询结果是一个queryset,如果我们不对其进行打印和迭代操作,它就不会访问数据库。直到打印结果或者迭代的时候才会。所以只要我们查询结果是queryset时,可能不会查询到最新数据,可以尝试将all()去掉。

res = models.Book.objects.all()   # 如果只有这一句,不会查询数据库
print(res)  # 打印或者迭代才会走数据库
for i in res:  # # 打印或者迭代才会走数据库
	print(i.name)
posted @ 2023-04-20 21:39  ERROR404Notfound  阅读(1)  评论(0)    收藏  举报
Title