def evaluation_chart(self):
     # 销量榜数据表名称
     sales_volume_rankings_table_name = 'sales_volume_rankings'
     # 热评榜数据表名称
     heat_rankings_table_name = 'heat_rankings'
     # 创建自定义数据库对象
     mysql = MySQL()
     # 创建爬去对象
     mycrawl = Crawl()
     # 连接数据库
     sql = mysql.connection_sql()
     # 创建游标
     cur = sql.cursor()
     good_rate_list = [] # 好评率列表
     # 查询关注图书的信息,中的京东id
     attention_message = mysql.query_attention(cur, 'jd_id,book_name',
                                               sales_volume_rankings_table_name, "attention = '1'")
     for i in range(len(attention_message)):
         # 获取好评率与评价时间
         good_rate,time = mycrawl.get_evaluation(0, attention_message[i][0])
         # 将关注的商品名称与好评率添加至列表当中
         good_rate_list.append((attention_message[i][1], good_rate))
         # 关注的第一个商品
         if i == 0:
             plt1 = PlotCanvas() # 创建如表画布类对象
             # 显示评价分析图
             plt1.pie_chart(good_rate_list[0][1],
                            (100 - good_rate_list[0][1]), good_rate_list[0][0])
             # 将评价分析图添加至布局中
             self.horizontalLayout_0.addWidget(plt1)
         # 关注的第二个商品
         if i == 1:
             plt2 = PlotCanvas()
             plt2.pie_chart(good_rate_list[1][1],
                            (100 - good_rate_list[1][1]), good_rate_list[1][0])
             self.horizontalLayout_1.addWidget(plt2)
         # 关注的第三个商品
         if i == 2:
             plt3 =PlotCanvas()
             plt3.pie_chart(good_rate_list[2][1],
                            (100 - good_rate_list[2][1]),good_rate_list[2][0])
             self.horizontalLayout_2.addWidget(plt3)
     mysql.close_sql() # 关闭数据库
Example #2
0
 def evaluation_chart(self):
     # 销量榜数据表名称
     sales_volume_rankings_table_name = 'sales_volume_rankings'
     # 创建自定义数据库对象
     mysql = MySQL()
     # 连接数据库
     sql = mysql.connection_sql()
     # 创建游标
     cur = sql.cursor()
     # 获取关注商品的出版社名称与图书名称
     attention_message = mysql.query_attention(
         cur, 'press,book_name', sales_volume_rankings_table_name,
         "attention = '1'")
     for i in range(len(attention_message)):
         query_sql = "select press,count(*) from sales_volume_rankings " \
                     "group by press having press = '{name}'".\
             format(name =attention_message[i][0])
         # 查询关注商品出版社占有比例
         number, press = mysql.query_press_proportion(cur, query_sql)
         # 计算其它比例并添加至列表中
         number.append((100 - number[0]))
         press.append('其它')
         # 关注的第一个商品
         if i == 0:
             plt1 = PlotCanvas()  # 创建如表画布类对象
             # 显示出版社占有比例图
             plt1.bar(number, press, attention_message[i][1])
             # 将出版社占有比例图添加至布局中
             self.horizontalLayout_0.addWidget(plt1)
         # 关注的第二个商品
         if i == 1:
             plt2 = PlotCanvas()
             plt2.bar(number, press, attention_message[i][1])
             self.horizontalLayout_1.addWidget(plt2)
         # 关注的第三个商品
         if i == 2:
             plt3 = PlotCanvas()
             plt3.bar(number, press, attention_message[i][1])
             self.horizontalLayout_2.addWidget(plt3)
     mysql.close_sql()  #关闭数据库