Best Flask open-source libraries and packages

SCNU CS 2018 DatabaseProject

华南师范大学计算机学院2018级数据库系统课程项目 (2018 database project of School of Computer Science, South China Normal University)
Updated 1 month ago

SCNU-CS-2018-DatabaseProject

华南师范大学计算机学院2018级数据库课程项目。课程一共有两阶段的任务,要求分别选取一款传统型数据库和 NoSQL 数据库,在 Linux 环境下部署服务端,以 C/S 架构实现数据库的各项基本功能和部分特色操作。

本项目选用的是 MySQL 和 Redis ,由于课程不对性能作要求,因此为了能够快速实现要求的功能,项目选用了 Flask 作为服务端,并以 web 的方式开发客户端,具体的项目框架请参照下图。

架构图

开发环境与依赖

CentOS Linux release 8.3.2011 (项目使用阿里云 ECS 开发,程序可兼容 Linux 系统,尚未在其它类型的系统实现,因此不保证兼容性)

python 3.6

MySQL 8.0.21

Redis 5.0.3

其余依赖均包含在项目对应的虚拟环境文件夹 (DatabaseVenv)

部署流程

  1. clone 本仓库

    git clone https://github.com/charfole/SCNU-CS-2018-DatabaseProject.git
    cd SCNU-CS-2018-DatabaseProject
  2. 在 Linux 环境下安装相关依赖

    安装Python、MySQL和Redis,安装教程可参照菜鸟教程(Python, MySQL, Redis)

  3. 部署 MySQL 项目

    • 创建数据表

      cd MySQL/data
      # 在连接mysql数据库后执行
      source cardTable.sql
      source geoTable.sql
      source userTable.sql
      
      # PS:除此之外,也可以通过Navicat等DBMS修改并执行三个sql文件
    • 修改数据库连接信息

      # 打开 MySQL/backend/app.py
      # 根据个人情况修改user、password和db三个参数,确保连接到希望操纵的数据库
      conn = pymysql.connect(host='127.0.0.1', user='root', password='', db='charfoleTable', charset='utf8') # connect to the database
    • 部署后端代码

      source ../DatabaseVenv/bin/activate
      cd MySQL/backend
      gunicorn -b :5000 app:app # debug模式运行
      gunicorn -c config.py app:app # config模式运行
  4. 修改 MySQL 客户端对应的 IP 地址

    // 打开 MySQL/web/page.html
    // 根据个人情况,将所有出现yourIPAddress语句中的yourIPAddress替换为你部署flask的ip(服务器ip或者是虚拟机的ip)
    
    url: "http://yourIPAddress:5000/charfoleTransaction"
    
    // 修改完后,打开page.html并刷新即可成功运行项目
  5. 部署 Redis 项目

    • 创建数据

      cd Redis/data
      
      # 将 Redis/data/charfole.csv 中的数据写入redis的第0号数据库
      python3 readData.py
    • 部署后端代码

      source ../DatabaseVenv/bin/activate
      cd MySQL/backend
      gunicorn -b :5000 app:app # debug模式运行
      gunicorn -c config.py app:app # config模式运行
  6. 修改 Redis 客户端对应的 IP 地址

    // 打开 Redis/web/page.html
    // 根据个人情况,将所有出现yourIPAddress语句中的yourIPAddress替换为你部署flask的ip(服务器ip或者是虚拟机的ip)
    
    url: "http://yourIPAddress:5000/charfoleCRUD"
    
    // 修改完后,打开page.html并刷新即可成功运行项目

实现的功能

  1. MySQL项目
    • 执行基本的 SQL 语句,包括但不限于增删查改、索引、跨表操作
    • 事务支持(execute、commit、rollback)
    • 用户性能查询(仅在后端实现、需提前创建对应的用户并修改后端代码)
  2. Redis项目
    • Redis 的基本功能,对数据库中所包含的键值对进行增删查改
    • 基数查询(Hyperloglog)功能

由于篇幅所限,更多的功能说明请参照项目文档

项目截图

  1. MySQL

  2. Redis

写在后面

为了快速兑现课程要求的相关功能,因此项目在性能、鲁棒性方面有所欠缺。如发现有错误或不足,十分欢迎 issue 或 pr。希望能帮助到学习该门课程的同学。