# 简易教务选课系统hcourse **Repository Path**: zhangjun76/hcourse ## Basic Information - **Project Name**: 简易教务选课系统hcourse - **Description**: 简易教务选课系统(hcourse)后端,适合大作业 restful接口,带文档,数据库采用华为OpenGauss python+flask框架 orm技术使用Sqlalchemy,依赖经过修改,已将依赖打包发布至release。 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-10-16 - **Last Updated**: 2024-10-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 数据库:数据库建议使用docker安装,提供以下命令 ```shell # docker拉取最新opengauss镜像 docker pull enmotech/opengauss:latest # 启动docker镜像,具体配置可根据自己需求 docker run --name gauss-hcourse --privileged=true -d -e GS_PASSWORD=Test@123 -p 5432:5432 enmotech/opengauss:latest # 进入docker容器中 docker exec -it gauss-hcourse /bin/bash # 切换为omm账号 su omm # 进入数据库 gsql ``` 在数据库中分别逐句执行如下sql语句 ```sql create user hao with password 'Test@123'; create database hcourse owner hao; GRANT ALL PRIVILEGES ON DATABASE hcourse to hao; ALTER ROLE hao CREATEDB; GRANT ALL PRIVILEGES TO hao; ``` 上述命令构建出来的数据库名为`hcourse`,用户名为`hao`,密码为`Test@123`。 docker镜像内部数据库端口为`5432`,映射在本地的`5432`端口上。 因此,建议将`config.py`的`SQLALCHEMY_DATABASE_URI`修改为`postgresql+psycopg2://hao:Test@123@localhost:5432/hcourse` > 由于使用了`openGauss`数据库(基于`postgreSQL`魔改的数据库),故使用`flask-sqlalchemy`的orm框架无法很好的适配。 > 不想骂了,本身`pgsql`在国内使用的人就少、生态差,别说这个魔改的`openGauss`了。 > 因此,我对本项目的依赖库进行了修改使得适配`openGauss`。 ### 环境 > 请使用linux系统运行,部分库文件可能不支持在windows运行 > 本项目在 Ubuntu 20.04 LTS 系统开发 ``` # 以下环境在开发时已经被我更改过源文件,因此我使用conda打包了一份 # 请不要直接安装以下依赖 alembic==1.7.5 Flask==1.1.2 flask_cors==3.0.10 Flask_Migrate==3.1.0 Flask_SQLAlchemy==2.5.1 SQLAlchemy==1.4.15 ``` 部署本项目时,环境请务必使用我打包的环境 依赖路径 ```shell backend/app/flask-gauss-env ``` 请使用如下命令激活环境: ```shell source flask-gauss-env/bin/activate ``` ### 如何运行? > 以下操作均在 已经打包的虚拟环境中运行 第一步:数据库操作。 1. 初始化db ```shell flask db init ``` 2. 迁移数据库 ```shell flask db migrate -m "initial migrate" ``` 3. 同步到`openGauss`数据库 ```shell flask db upgrade ``` 第二步:运行flask程序 ```shell flask run ``` 建议服务器端使用nohup后台运行 ```shell nohup flask run & ``` ### api接口说明 > 接口文档已经生成,可访问如下网址查看 > http://hcourse.chawu.top/ > 项目启动后,也可访问本地首页查看文档 #### Auth `Login` ```api url: http://host:port/api/v1.0/auth/login method: post params(e.g.): { "account":"admin", "password":"123456!!!" } ``` #### 其余接口提供以下 1. `Add - POST` 2. `Read - GET` 3. `Query - GET` 4. `Partial Update - PATCH` 5. `Delete - DELETE` 具体示例提供了`postman`接口测试软件导出的接口`json`数据文件`hcourse.postman_collection.json` 可以导入`postman`中自行测试查看。