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.

110 lines
2.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 目录结构说明
```
Mini-12306
-- app //主要接口业务代码
---- models //定义了数据库表结构与抽象类方法
-- logs //日志存储
-- migrations //执行迁移后的数据库版本文件,请查看Flask-Migrate使用方法。
-- presenter //渲染文件,用于数据序列化
-- utils //工具包
---- response.py //定义返回数据结构及定义状态码
-- Dockerfile //docker容器化文件
-- docker-compose.yml //容器编排文件
```
### 开发环境安装
1. 安装 Python 3.12.x以上版本
2. 使用 pip 安装项目所需要的包:
```
cd 12306mini_python
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
pip config set install.trusted-host mirrors.aliyun.com
pip install -r requirements.txt
```
3. 安装 PostgreSQL, 并创建数据库
根目录下的config.py文件中 SQLALCHEMY_DATABASE_URI 是定义项目连接数据库的地址(包括数据库账号、密码、名称)。
连接数据库的密码及数据库均可以自行设定。
4. 执行迁移
在项目的根目录下执行下列命令,此命令会将数据表生成。
表的生成逻辑请查看Flask-Migrate使用方法。
```
flask db upgrade
```
5. 运行项目
```
flask run myapp.py
```
### docker部署
1. 找一台Ubuntu服务器安装docker及docker-compose
2. 在服务器上创建日志文件存储位置(该文件用于 docker-compose 中 volumes 关联)
```
mkdir /var/log/mini12306_python
```
3. 构建容器
```
docker-compose build
```
你可能会遇到build失败的问题。
因为国内的原因无法正常自动下载 postgres 和 redis_alpine 这两个软件。
解决方案如下:
下载此链接中两个docker软件包至服务器: postgres_15.tar redis_alpine.tar
https://pan.baidu.com/s/1qMRtQ0Fhy7r5L_58RHe5Fw?pwd=vu3c 提取码: vu3c
可以将文件先下载到本机然后使用scp命令将文件上传至服务器。
文件上传至服务后cd至文件所在的目录然后运行下列指令
```
docker load < postgres_15.tar
docker load < postgres_15.tar
然后再执行 docker-compose build
```
4. 运行容器
```
docker-compose run --rm python flask db upgrade
docker-compose up -d
```
---
### 扩展使用: Flask-Migrate 使用方法
首先,初始化 Alembic 目录migrations/ 文件夹):
```
flask db init
```
当你对模型进行了更改(如添加新表或修改现有表的结构),你可以生成迁移脚本:
```
flask db migrate -m "Initial migration"
```
这将根据你定义的模型生成迁移脚本。
执行迁移
```
flask db upgrade
```
---
### 扩展使用:使用 pdb 工具断点调试
```
pdb.set_trace()
```