MusicDB 是一个完整的音乐数据库管理系统,提供音乐数据管理和个性化推荐功能。系统采用前后端分离架构,后端使用 Flask + MySQL,前端使用 Vue 3 + Element Plus。
- 用户管理:用户注册、登录和个人信息管理
- 歌手管理:歌手信息维护和展示
- 专辑管理:专辑信息与歌曲关联
- 歌曲管理:完整的歌曲信息管理
- 收藏功能:用户收藏喜欢的歌曲
- 播放列表:创建和管理个人播放列表
- 音乐流派:歌曲流派分类管理
- 个性化推荐:基于用户收藏行为的智能推荐
- 热门推荐:最新歌曲和热门歌手展示
- 收藏统计:显示歌曲和歌手的收藏次数
- 系统概览统计(用户、歌手、专辑、歌曲数量)
- 热门歌手排行榜
- 最新歌曲展示
- 框架:Flask 2.3.3
- 数据库:MySQL + SQLAlchemy ORM
- 认证:基于用户ID的简单认证
- 跨域:Flask-CORS
- 环境配置:python-dotenv
- 框架:Vue 3.3.4 + Vue Router 4.2.4
- UI组件:Element Plus 2.3.8
- 构建工具:Vite 4.4.5
- HTTP客户端:Axios 1.4.0
MusicDB/
├── app.py # Flask应用入口
├── models.py # 数据库模型定义
├── routes.py # API路由定义
├── init_db.py # 数据库初始化脚本
├── requirements.txt # Python依赖
├── .env # 环境配置文件
├── frontend/ # 前端项目
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── api/ # API接口封装
│ │ ├── router/ # 路由配置
│ │ └── utils/ # 工具函数
│ ├── package.json # 前端依赖
│ └── vite.config.js # Vite配置
└── README.md # 项目说明
- Python 3.8+
- Node.js 14+
- MySQL 5.7+
- 克隆项目
git clone <repository-url>
cd MusicDB- 创建虚拟环境
python -m venv .venv
# Windows
.venv\Scripts\activate
# Linux/Mac
source .venv/bin/activate- 安装依赖
pip install -r requirements.txt- 配置数据库
创建
.env文件并配置数据库连接:
DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=your_password
DB_NAME=musicdb- 初始化数据库
python init_db.py- 启动后端服务
python app.py后端服务将在 http://localhost:5000 启动
- 进入前端目录
cd frontend- 安装依赖
npm install- 启动开发服务器
npm run dev前端服务将在 http://localhost:5173 启动
- users:用户信息表
- singers:歌手信息表
- albums:专辑信息表
- songs:歌曲信息表
- favorites:用户收藏表
- playlists:播放列表表
- genres:音乐流派表
- song_genres:歌曲流派关联表
- 歌手与专辑:一对多关系
- 专辑与歌曲:一对多关系
- 用户与收藏:一对多关系
- 歌曲与流派:多对多关系
GET /api/users- 获取用户列表POST /api/users- 创建新用户GET /api/users/<id>- 获取用户详情
GET /api/singers- 获取歌手列表POST /api/singers- 创建新歌手GET /api/singers/<id>- 获取歌手详情
GET /api/songs- 获取歌曲列表POST /api/songs- 创建新歌曲GET /api/songs/<id>- 获取歌曲详情
GET /api/favorites- 获取收藏列表POST /api/favorites- 添加收藏DELETE /api/favorites/<id>- 取消收藏
GET /api/recommendations?user_id=<id>- 获取个人推荐GET /api/recommendations/popular- 获取热门推荐
- 基于用户收藏:分析用户收藏的歌曲和歌手
- 歌手相似度:推荐用户收藏歌手的其他歌曲
- 最新补充:推荐数量不足时补充最新歌曲
- 去重处理:排除用户已收藏的歌曲
- 返回最新添加的10首歌曲
- 按创建时间倒序排列
- 仪表盘:系统概览、最新歌曲、热门歌手、个人推荐
- 用户管理:用户信息管理
- 歌手管理:歌手信息维护
- 歌曲管理:歌曲信息管理
- 播放列表:播放列表创建和管理
- 响应式设计,支持移动端
- Element Plus组件库
- 现代化的卡片布局
- 实时数据统计展示
- 在
routes.py中添加新的路由函数 - 在
models.py中定义相关数据模型(如果需要) - 在前端
api目录中添加对应的API调用函数 - 在前端页面中使用新的API
当修改数据模型时:
- 更新
models.py中的模型定义 - 删除现有数据库表
- 重新运行
init_db.py初始化数据库
- 使用
npm run dev启动开发服务器 - 支持热重载,修改代码自动刷新
- 使用 Vue 3 Composition API
-
数据库连接失败
- 检查MySQL服务是否启动
- 确认
.env文件中的数据库配置正确
-
端口冲突
- 后端默认端口:5000
- 前端默认端口:5173
- 修改端口可在配置文件中调整
-
依赖安装失败
- 确保使用正确的Python和Node.js版本
- 清除缓存后重新安装依赖