标签:数据 根据 mha object 多少 name 引用 日期 文件
配置以下两处,可以方便我们直接右键运行tests.py一个文件,实现对数据库操作语句的调试:
settings里面的设置:
#可以将Django对数据库的操作语法,能输出对应的的sql语句 LOGGING = { ‘version‘: 1, ‘disable_existing_loggers‘: False, ‘handlers‘: { ‘console‘:{ ‘level‘:‘DEBUG‘, ‘class‘:‘logging.StreamHandler‘, }, }, ‘loggers‘: { ‘django.db.backends‘: { ‘handlers‘: [‘console‘], ‘propagate‘: True, ‘level‘:‘DEBUG‘, }, } }
tests.py的配置
# 这样设置是方便我们直接在这里里面操作运行,就可以看效果 import os if __name__ == ‘__main__‘: os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day08.settings") import django django.setup() # 导入models里面的Book模块,用于在这里引用 from app01.models import * book=Book.objects.all().filter(publish=‘中央出版社88‘) print(book) book = Book.objects.all().filter(nid=1) print(book) #下面就可以写一些对数据库操作的命令,在本窗口就可以实现调试 # 查询name里面以红字开头的 book=Book.objects.all().filter(name__startswith=‘红‘) print(book.values_list()) #<QuerySet [(3, ‘红楼梦‘, Decimal(‘30.00‘), datetime.date(2001, 1, 12), ‘作者2‘, ‘上海出版社‘)]> .......
数据库的查看操作:
#基于双下划线的模糊查询 # 查询name里面以红字开头的 book=Book.objects.all().filter(name__startswith=‘红‘) print(book.values_list()) #<QuerySet [(3, ‘红楼梦‘, Decimal(‘30.00‘), datetime.date(2001, 1, 12), ‘作者2‘, ‘上海出版社‘)]> #查询name里面以传字结尾的 book=Book.objects.all().filter(name__endswith=‘传‘) print(book) #<QuerySet [<Book: 水浒传>, <Book: 自传>]> #查询name里面包含果字的 book=Book.objects.all().filter(name__contains=‘国‘) print(book) #<QuerySet [<Book: 三国演义>, <Book: 国策>]> #name__icontains查询的时候不区分大小写,都能匹配到 #查询在后面列表里面的id book=Book.objects.filter(nid__in=[1,2,3,4]) #匹配到4本 print(book) #<QuerySet [<Book: 三国演义>, <Book: 书1>, <Book: 红楼梦>, <Book: 小红薯>]> #nid大于26的数据 book=Book.objects.all().filter(nid__gt=‘26‘) #nid小于3的数据 book = Book.objects.all().filter(nid__lt=3) #nid小于等于3的数据 book=Book.objects.filter(nid__lte=‘3‘) #包含nid=3 #nid大于等于26的数据 book=Book.objects.filter(nid__gte=‘26‘) #包含nid=26 print(book) #查找id在列表范围内的数据(注意,包含1和3) # book=Book.objects.all().filter(nid__range=[1,3]) # print(book) #查找>=10 并且 <=15的值 book=Book.objects.all().filter(price__gte=20,price__lte=24) print(book) #<QuerySet [<Book: 三国演义>, <Book: 书1>, <Book: 国策>]> #根据出版日期查询,年、月、日 book=Book.objects.filter(pub_date__year=1997) book=Book.objects.filter(pub_date__month=2) book=Book.objects.filter(pub_date__day=11) book=Book.objects.filter(pub_date__day__in=[12,5])
数据库的删除操作:
#删除 #queryset来删除 ret=Book.objects.filter(nid=20).delete() print(ret) #(1, {‘app01.Book‘: 1}) #对象来删除 ret = Book.objects.filter(nid=18).first() #书2 ret = Book.objects.filter(nid=19).first().delete() print(ret) #(1, {‘app01.Book‘: 1}) 1:本次操作总共影响了多少条记录 1:本张表里面影响的记录数 #manager对象不行,例如: ret=Book.objects.delete() #这个可以,清空表里所有数据信息 ret=Book.objects.all().delete() #不要轻易使用
数据库的更改操作:
#更新(更新) #返回的结果是int类型,只能queryset对象来调用,对象不能来调用,返回的结果是int类型 #例如下面first对象调用就报错: ret=Book.objects.all().filter(nid=9).first().update(name=‘aaa‘) #错误的写法,不能用对象调用 print(ret) #报错 ‘Book‘ object has no attribute ‘update‘ ret = Book.objects.all().filter(nid=9).update(name=‘书9999‘) print(ret) #1 ret = Book.objects.all().filter(nid=10).update(name=‘书10书10‘,price=1.1) #可以同时改几个字段 print(ret) #1
标签:数据 根据 mha object 多少 name 引用 日期 文件
原文地址:https://www.cnblogs.com/yangzhizong/p/9621763.html