69 lines
2.5 KiB
Markdown
69 lines
2.5 KiB
Markdown
## 这是一个数据库接口服务
|
||
- 主要功能是将多种类型的数据库集中到一起,提供统一的接口
|
||
- 支持的数据库类型包括mysql、oracle、sqlserver、postgresql等
|
||
## 主要功能
|
||
- 提供的数据库管理功能,通过传入数据库类型,ip和端口以及用户名和密码,来连接数据库
|
||
- 可以获取到数据库的信息,包括数据库的名称,数据库中的表,字段类型,数据库的字段备注等
|
||
- 提供接口,可以对数据库中的数据进行查操作
|
||
- 提供接口,可以对数据库中的表进行查操作
|
||
- 提供接口,可以对数据库中的字段进行查操作
|
||
- 提供接口,可以修改数据库本身以及字段的备注信息
|
||
## 主要接口包括
|
||
- 数据库管理接口
|
||
- 测试能否连通数据库
|
||
- 获取数据库信息
|
||
- 获取某个数据库中所有的数据库表和表备注信息
|
||
- 获取数据表中字段名和类型以及备注信息
|
||
|
||
## 项目启动步骤
|
||
|
||
### 1. 创建并激活conda环境
|
||
```bash
|
||
# 创建Python 3.11环境
|
||
conda create -n database-etl python=3.11
|
||
|
||
# 激活环境
|
||
conda activate database-etl
|
||
```
|
||
|
||
### 2. 安装项目依赖
|
||
```bash
|
||
# 安装所有依赖包
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. 启动项目
|
||
```bash
|
||
# 启动FastAPI服务
|
||
python main.py
|
||
```
|
||
|
||
### 4. 访问服务
|
||
- 服务地址:http://localhost:8000
|
||
- API文档:http://localhost:8000/docs
|
||
- ReDoc文档:http://localhost:8000/redoc
|
||
- 健康检查:http://localhost:8000/health
|
||
|
||
## 主要技术栈
|
||
通过fastapi启动api服务,使用sqlalchemy来创建连接引擎,对不同的数据库使用不同的驱动,mysql使用PyMySQL,Oracle使用oracledb,sqlserver使用pymssql,postgresql使用psycopg2
|
||
|
||
## 其他
|
||
- 主要要将一些基础功能进行封装,例如创建数据库引擎,执行sql语句等
|
||
- 提供的接口要符合restful风格
|
||
- 提供的接口要符合http协议的规范
|
||
- 提供的接口要符合json格式
|
||
- 提供的接口要符合http状态码的规范
|
||
- 提供的接口要符合http头的规范
|
||
- 提供的接口要符合http请求体的规范
|
||
- 提供的接口要符合http响应体的规范
|
||
- main.py作为程序的入口
|
||
|
||
## 接口风格调整
|
||
- GET接口参数统一改为使用URL的query传参,例如 `?a=123&b=321`
|
||
- 所有PUT和DELETE接口统一改为POST方法,路径保持不变(除GET去除路径参数外)
|
||
- 示例:
|
||
- `GET /api/v1/databases/info?connection_id=<conn_id>`
|
||
- `GET /api/v1/databases/tables/info?connection_id=<conn_id>&table_name=<table>`
|
||
- `POST /api/v1/tables/data/update`
|
||
- `POST /api/v1/tables/data/delete`
|