# 豆瓣电影数据可视化Web应用使用文档

## 项目概述

这是一个基于 Flask 框架开发的豆瓣电影数据可视化 Web 应用，用于展示豆瓣电影分类 Top 200 的数据信息。

## 项目结构

```
DoubanMovies/
├── app.py              # Flask 应用主文件
├── DB.py               # 数据库连接和表定义
├── douban_movies.sql   # 数据库表结构和数据
├── requirements.txt    # 依赖包列表
└── templates/
    └── index.html      # 主页面模板
```


## 技术栈

- **后端框架**: Flask
- **数据库**: MySQL
- **ORM**: SQLAlchemy
- **数据库驱动**: PyMySQL
- **前端**: HTML + CSS + Jinja2 模板引擎

## 环境配置

### 依赖安装

```bash
pip install -r requirements.txt
```


项目所需依赖包在 `requirements.txt`中定义（根据自己Python版本选择）：

- Flask==3.1.2
- SQLAlchemy==2.0.45
- PyMySQL==1.1.2
- 其他相关依赖

### 数据库配置

#### 数据库连接信息

在 `DB.py` 文件中定义了数据库连接信息：

```python
self.engine = create_engine('mysql+pymysql://用户:密码@主机:端口/数据库?charset=utf8mb4', echo=False)
```


#### 数据库初始化(若是已有可以跳过该步骤)

1. 执行`douban_movies.sql`文件创建数据库表并导入初始数据
2. 确保数据库服务正常运行

## 代码说明

### `app.py`

- 定义 Flask 应用
- `/` 路由：获取所有电影数据并渲染到模板

### `DB.py`

- `DB` 类：封装数据库连接和表定义
- `connect()`方法：建立数据库连接
- `table()` 方法：定义数据表结构

### `index.html`

- 使用 CSS 样式美化表格显示
- 通过 Jinja2 模板引擎渲染电影数据
- 代码`{%for row in rows%} ...{% endfor %}`作用
  - 这段代码是 Jinja2 模板引擎 的循环语法，用于在网页中动态渲染数据库中的电影数据

## 数据表结构

数据库包含 `douban_movies` 表，字段包括：

- `id`: 主键，自增整数
- `m_id`: 电影ID，字符串
- `m_title`: 电影标题
- `m_score`: 电影评分
- `m_rank`: 电影排名
- `m_type` / `m_type`: 电影类型
- `m_regions`: 制片国家/地区
- `m_release_date`: 上映时间
- `m_actors`: 演员列表
- `m_cover_url`: 海报URL

## 功能说明

### 主页面

主页面（`/`）显示豆瓣电影数据表格，包含以下列：

- **序号**: 电影在数据库中的ID
- **标题**: 电影名称
- **评分**: 电影豆瓣评分
- **类型**: 电影类型
- **国家/地区**: 电影制片国家或地区
- **上映时间**: 电影上映日期

## 运行应用

1. 启动应用：
   ```bash
   python app.py
   ```


2. 访问应用：
   打开浏览器访问 `http://localhost:5000`

## 配置说明

### 数据库连接

如需修改数据库连接，请在 `DB.py`中修改 `engine` 的连接字符串：

```python
self.engine = create_engine('mysql+pymysql://用户名:密码@主机:端口/数据库名?charset=utf8mb4', echo=False)
```

## 常见问题

### 1. 数据库连接失败

- 确认连接参数是否正确
- 检查网络连接是否正常

### 2. 表名不匹配

- 确保代码中的表名与数据库中的表名一致

### 3. 编码问题

- 数据库连接使用 UTF-8 编码（charset=utf8mb4）

## 版权信息

本项目为教学演示用途，数据来源于豆瓣电影。