python123测验9程序题答案_Django ORM 练习题及答案_python_脚本之家
1.modles中表結(jié)構(gòu)
#出版社
class Publisher(models.Model):
name = models.CharField(max_length=32)
city = models.CharField(max_length=32)
def __str__(self):
return "".format(self.id, self.name)
#書籍
class Book(models.Model):
title = models.CharField(max_length=32)
publish_date = models.DateField(auto_now_add=True)
price = models.DecimalField(max_digits=5,decimal_places=2)
memo = models.TextField(null=True)
#創(chuàng)建外鍵,關(guān)聯(lián)Publisher
Publisher = models.ForeignKey(to='Publisher')
def __str__(self):
return "".format(self.id, self.title
#作者
class Author(models.Model):
name = models.CharField(max_length =32)
age = models.IntegerField()
phone = models.CharField(max_length=11)
#創(chuàng)建多對(duì)多關(guān)聯(lián)
books = models.ManyToManyField(to='Book')
def __str__(self):
return "".format(self.id, self.name)
2.題目
"""
查找所有書名里包含金老板的書
查找出版日期是2018年的書
查找出版日期是2017年的書名
查找價(jià)格大于10元的書
查找價(jià)格大于10元的書名和價(jià)格
查找memo字段是空的書
查找在北京的出版社
查找名字以沙河開頭的出版社
查找“沙河出版社”出版的所有書籍
查找每個(gè)出版社出版價(jià)格最高的書籍價(jià)格
查找每個(gè)出版社的名字以及出的書籍?dāng)?shù)量
查找作者名字里面帶“小”字的作者
查找年齡大于30歲的作者
查找手機(jī)號(hào)是155開頭的作者
查找手機(jī)號(hào)是155開頭的作者的姓名和年齡
查找每個(gè)作者寫的價(jià)格最高的書籍價(jià)格
查找每個(gè)作者的姓名以及出的書籍?dāng)?shù)量
查找書名是“跟金老板學(xué)開車”的書的出版社
查找書名是“跟金老板學(xué)開車”的書的出版社所在的城市
查找書名是“跟金老板學(xué)開車”的書的出版社的名稱
查找書名是“跟金老板學(xué)開車”的書的出版社出版的其他書籍的名字和價(jià)格
查找書名是“跟金老板學(xué)開車”的書的所有作者
查找書名是“跟金老板學(xué)開車”的書的作者的年齡
查找書名是“跟金老板學(xué)開車”的書的作者的手機(jī)號(hào)碼
查找書名是“跟金老板學(xué)開車”的書的作者們的姓名以及出版的所有書籍名稱和價(jià)錢
"""
題目
3.測試數(shù)據(jù)
-- ----------------------------
-- Records of app01_author
-- ----------------------------
INSERT INTO `app01_author` VALUES ('1', '金老板', '18', '15512351234');
INSERT INTO `app01_author` VALUES ('2', '小哪吒', '20', '15312341234');
INSERT INTO `app01_author` VALUES ('3', 'Alex', '73', '15512341234');
-- ----------------------------
-- Records of app01_publisher
-- ----------------------------
INSERT INTO `app01_publisher` VALUES ('1', '沙河出版社', '北京');
INSERT INTO `app01_publisher` VALUES ('2', '西二旗出版社', '北京');
INSERT INTO `app01_publisher` VALUES ('3', '張江出版社', '上海');
INSERT INTO `app01_publisher` VALUES ('4', '沙河出版社', '上海');
-- ----------------------------
-- Records of app01_book
-- ----------------------------
INSERT INTO `app01_book` VALUES ('1', '跟金老板學(xué)開車', '2018-08-03', '12.90', null, '1');
INSERT INTO `app01_book` VALUES ('2', '跟金老板學(xué)開潛艇', '2017-08-10', '9.99', null, '1');
INSERT INTO `app01_book` VALUES ('3', '跟老男孩學(xué)思想', '2018-09-03', '39.99', null, '2');
INSERT INTO `app01_book` VALUES ('4', '跟egon學(xué)喊麥', '2018-06-12', '0.99', null, '4');
-- ----------------------------
-- Records of app01_book_author
-- ----------------------------
INSERT INTO `app01_book_author` VALUES ('3', '1', '1');
INSERT INTO `app01_book_author` VALUES ('4', '2', '1');
INSERT INTO `app01_book_author` VALUES ('5', '1', '2');
INSERT INTO `app01_book_author` VALUES ('2', '2', '2');
INSERT INTO `app01_book_author` VALUES ('6', '3', '3');
INSERT INTO `app01_book_author` VALUES ('7', '3', '4');
測試數(shù)據(jù)
4.答案
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ORMHomework.settings")
import django
django.setup()
from app01 import models
from django.db.models import Max, Min, Sum, Avg, Count
# 查找所有書名里包含金老板的書
ret1= models.Book.objects.filter(title__contains='金老板')
# print (ret1)
#查找出版日期是2018年的書
ret2 = models.Book.objects.filter(publish_date__year=2018)
# print (ret2)
#查找出版日期是2017年的書名
ret3 = models.Book.objects.filter(publish_date__year=2017).values('title')
# print (ret3)
#查找價(jià)格大于10元的書
ret4 =models.Book.objects.filter(price__gt=10)
# print(ret4)
#查找價(jià)格大于10元的書名和價(jià)格
ret5 = models.Book.objects.filter(price__gt=10).values('title','price')
# print(ret5)
# 查找memo字段是空的書
ret6 = models.Book.objects.filter(memo__isnull=True)
# print(ret6)
#-----------------------------------------------------------------------------
# 查找在北京的出版社
ret7 = models.Publisher.objects.filter(city='北京')
# print(ret7)
# 查找名字以沙河開頭的出版社
ret8 = models.Publisher.objects.filter(name__startswith='沙河')
# print(ret8)
#查找“沙河出版社”出版的所有書籍
ret9 =models.Book.objects.filter(Publisher__name='沙河出版社')
# print(ret9)
# 查找每個(gè)出版社出版價(jià)格最高的書籍價(jià)格
# ret10 = models.Publisher.objects.all().annotate(max=Max('book__price')).values('name','max')
# ret10 = models.Publisher.objects.annotate(max=Max('book_price')).values()
# for i in ret10 :
# print(i)
# 查找每個(gè)出版社的名字以及出的書籍?dāng)?shù)量
ret11 = models.Publisher.objects.annotate(count=Count('book__title')).values('name','count')
# for i in ret11:
# print(i)
#---------------------------------------------------------------------------------------------------------
#查找作者名字里面帶“小”字的作者
ret12 = models.Author.objects.filter(name__contains='小')
# print(ret12)
#查找年齡大于30歲的作者
ret13 = models.Author.objects.filter(age__gt=30)
# print(ret13)
#查找手機(jī)號(hào)是155開頭的作者
ret14 = models.Author.objects.filter(phone__startswith=155)
# print(ret14)
#查找手機(jī)號(hào)是155開頭的作者的姓名和年齡
ret15 = models.Author.objects.filter(phone__startswith=155).values('name','age')
# print(ret15)
#查找每個(gè)作者寫的價(jià)格最高的書籍價(jià)格
# ret16 = models.Author.objects.annotate(max=Max('books__price')).values('name','max')
ret16= models.Book.objects.values('author').annotate(max=Max('price')).values('author','max')
# for i in ret16:
# print(i)
#查找每個(gè)作者的姓名以及出的書籍?dāng)?shù)量
# ret17 = models.Author.objects.all().annotate(count=Count('books__title')).values('name','count')
# for i in ret17 :
# print(i)
#-------------------------------------------------------------------------------------------------------
#查找書名是“跟金老板學(xué)開車”的書的出版社
ret18 = models.Publisher.objects.filter(book__title='跟金老板學(xué)開車')
# print (ret18)
#查找書名是“跟金老板學(xué)開車”的書的出版社所在的城市
ret19 = models.Publisher.objects.filter(book__title='跟金老板學(xué)開車').values('city')
# print(ret19)
#查找書名是“跟金老板學(xué)開車”的書的出版社的名稱
ret20 = models.Publisher.objects.filter(book__title='跟金老板學(xué)開車').values('name')
# print(ret20)
#查找書名是“跟金老板學(xué)開車”的書的出版社出版的其他書籍的名字和價(jià)格
pub_obj = models.Publisher.objects.get(book__title='跟金老板學(xué)開車')
ret21= pub_obj.book_set.all().exclude(title='跟金老板學(xué)開車').values('title','price')
print(ret21)
#查找書名是“跟金老板學(xué)開車”的書的所有作者
# ret22 = models.Author.objects.filter(books__title='跟金老板學(xué)開車')
# print(ret22)
#查找書名是“跟金老板學(xué)開車”的書的作者的年齡
# ret23 = models.Author.objects.filter(books__title='跟金老板學(xué)開車').values('name','age')
# print(ret23)
#查找書名是“跟金老板學(xué)開車”的書的作者的手機(jī)號(hào)碼
# ret24 = models.Author.objects.filter(books__title='跟金老板學(xué)開車').values('name','phone')
# print(ret24)
#查找書名是“跟金老板學(xué)開車”的書的作者們的姓名以及出版的所有書籍名稱和價(jià)錢
# ret25= models.Author.objects.filter(books__title='跟金老板學(xué)開車')
# print(ret25)
# for i in ret25:
# print(i.books.all().values('title','price'))
#
# ret = models.Book.objects.aggregate(Max('price'))
# print(ret)
ret25 = models.Author.objects.values('name','books__title','books__price').filter(books__title='跟金老板學(xué)開車')
print(ret25)
答案
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的python123测验9程序题答案_Django ORM 练习题及答案_python_脚本之家的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 99种重疾有哪些
- 下一篇: python涉及到的逻辑_涉及逻辑运算的