import logging
from os import error, name
import sqlite3
from flask import Flask, request, redirect, render_template, url_for
import sqlite3
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/search/')
def search():
conn = sqlite3.connect('iMusic.db')
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT Name FROM Genre ORDER BY Name ASC;")
rows = cur.fetchall()
return render_template('search.html', genres=rows)
@app.route('/search/genre',methods=['GET','POST'])
def search_results():
if request.method =='POST':
genre=request.form['genre']
conn = sqlite3.connect('iMusic.db')
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("select Album.AlbumId, Title AS 'AlbumTitle', Artist.Name AS 'ArtistName', sum(Milliseconds/1000) AS 'AlbumDuration', ROUND(sum(UnitPrice),2) AS 'AlbumValue' FROM Genre INNER JOIN Track ON Genre.GenreId=Track.GenreId INNER JOIN Album ON Track.AlbumId=Album.AlbumId INNER JOIN Artist ON Artist.ArtistId=Album.ArtistId GROUP BY Album.AlbumId HAVING Genre.Name=?;",(genre,))
number = cur.fetchall()
return render_template('results.html',albums=number,genre=genre)
@app.route('/tracks/<string:album_id>')
def tracks(album_id):
sql_query = """
SELECT
TrackId, Name, Composer, Milliseconds AS Duration, UnitPrice as Price
FROM Track
WHERE AlbumId = ?
ORDER BY AlbumId;
"""
con = sqlite3.connect("iMusic.db")
con.row_factory = sqlite3.Row
cur = con.cursor()
cur.execute(sql_query, (album_id,))
album_tracks = cur.fetchall()
print([a[0] for a in album_tracks])
return render_template('track_list.html', tracks=album_tracks)
@app.route('/add/')
def add():
return render_template('add_genre.html')
@app.route('/add/genre',methods=['GET','POST'])
def add_genre():
if request.method =='POST':
new=request.form['genre']
cnt=0
boolen=0
hint=[""]
conn = sqlite3.connect('iMusic.db')
conn.row_factory = sqlite3.Row
cur = conn.cursor()
cur.execute("SELECT Name FROM Genre")
rows = cur.fetchall()
for i in rows:
if new == i[0]:
boolen = 1
cnt = cnt + 1
if boolen==1:
hint[0] = "The specified Genre is already present in the DB."
elif len(new) == 0:
hint[0] = "A Genre name must be provided."
boolen = 1
else:
try:
cur.execute("INSERT INTO Genre (GenreId,Name) VALUES (?,?);",(cnt+1,new))
conn.commit()
hint[0] = 'Successfully added '+new+' to the DB.'
except sqlite3.Error as er:
hint[0] = "Unable to insert specified values into the database."
boolen=1
return render_template('add_genre.html',messages = hint,error = boolen)
if __name__ == "__main__":
app.run(debug=True, port=5000)
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
20319111.zip (19个子文件)
DBI_CW2_Code_and_Data
test1.py 481B
iMusic.db 380KB
select Album.AlbumId, Title, Artist.Name 301B
templates
search.html 623B
add_genre.html 604B
index.html 1006B
base.html 2KB
.DS_Store 6KB
results.html 995B
track_list.html 785B
iMusic 0B
.DS_Store 6KB
static
css
bootstrap.min.css 159KB
img
cover.jpeg 148KB
js
bootstrap.min.js 58KB
.DS_Store 6KB
task_1.py 669B
TrackPrices.csv 36KB
iMusic.py 3KB
共 19 条
- 1
NanDONG2002
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0