You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.2 KiB
100 lines
3.2 KiB
import pymysql
|
|
from flask import Flask ,render_template
|
|
import lxml
|
|
app = Flask(__name__)
|
|
|
|
|
|
def getDB():
|
|
'''连接数据库'''
|
|
db = pymysql.connect(host='localhost',user='root',password='shengji.',database='douban',)
|
|
return db
|
|
|
|
|
|
|
|
#跳转主页
|
|
@app.route('/')
|
|
def home(): # put application's code here
|
|
return render_template('index.html')
|
|
|
|
@app.route('/index')
|
|
def index(): # put application's code here
|
|
return render_template('index.html')
|
|
|
|
|
|
@app.route('/movies')
|
|
@app.route('/movies/<int:page>')
|
|
def movies(page = 1):# put application's code here
|
|
db = getDB()
|
|
cursor = db.cursor()
|
|
#查询当前页面电影列表
|
|
sql = "select ranks,links,film_name,film_name_en,rating_num,rating_people,summary,director from movies limit {},{} ".format((page-1)*25,page*25)
|
|
cursor.execute(sql)
|
|
data = cursor.fetchall()
|
|
datalist = []
|
|
for item in data:
|
|
datalist.append(item)
|
|
#查询电影总数
|
|
sql1 = "select count(*) from movies"
|
|
cursor.execute(sql1)
|
|
total = cursor.fetchone()
|
|
|
|
cursor.close()
|
|
db.close()
|
|
return render_template("movies.html",page=page,movies = datalist,countnum = int(int(total[0])/25))
|
|
|
|
|
|
|
|
|
|
@app.route('/tj')
|
|
def tj():# put application's code here
|
|
db = getDB()
|
|
cursor = db.cursor()
|
|
#电影评分分布图
|
|
rating = [] #评分
|
|
num = [] #每个电影评分统计出的电影数量
|
|
sql = "select rating_num,count(*) from movies GROUP BY rating_num"
|
|
cursor.execute(sql)
|
|
data = cursor.fetchall()
|
|
for item in data:
|
|
rating.append(float(item[0]))
|
|
num.append(item[1])
|
|
|
|
#电影类型分布图
|
|
filmtypes_list = [] #类型列表
|
|
filmtypes_num = [] #类型数量
|
|
sql1 = "select filmtype,count(filmtype) from movietype GROUP BY filmtype"
|
|
cursor.execute(sql1)
|
|
data1 = cursor.fetchall()
|
|
for item1 in data1:
|
|
filmtypes_list.append(item1[0])
|
|
filmtypes_num.append(item1[1])
|
|
|
|
#20年内电影上映数量统计图
|
|
years = [] #年
|
|
years_num = [] #每年的电影数量
|
|
sql2 = "select YEAR(STR_TO_DATE(initialrReleaseDate,'%Y-%m-%d')) as years,count(*) from movies WHERE STR_TO_DATE(initialrReleaseDate,'%Y-%m-%d')>DATE_SUB(CURRENT_DATE,INTERVAL 20 YEAR)GROUP BY YEAR(STR_TO_DATE(initialrReleaseDate,'%Y-%m-%d'))ORDER BY YEAR(STR_TO_DATE(initialrReleaseDate,'%Y-%m-%d'))"
|
|
cursor.execute(sql2)
|
|
data2 = cursor.fetchall()
|
|
for item2 in data2:
|
|
years.append(item2[0])
|
|
years_num.append(item2[1])
|
|
|
|
|
|
#电影数量最多的top10年份
|
|
top10 = [] #电影数量最多的top10年份的列表
|
|
top10_num = [] #电影数量最多的top10年份的电影数量
|
|
sql3 = "select YEAR(STR_TO_DATE(initialrReleaseDate,'%Y-%m-%d')) as years,count(*) from movies GROUP BY YEAR(STR_TO_DATE(initialrReleaseDate,'%Y-%m-%d'))ORDER BY count(*) desc limit 10 "
|
|
cursor.execute(sql3)
|
|
data3 = cursor.fetchall()
|
|
for item3 in data3:
|
|
top10.append(item3[0])
|
|
top10_num.append(item3[1])
|
|
|
|
return render_template('tj.html',rating=rating,num=num,filmtypes_list=filmtypes_list,filmtypes_num=filmtypes_num,
|
|
years=years,years_num=years_num,top10=top10,top10_num=top10_num)
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run()
|