Tornado笔记——用Tornado搭建假单统计系统

本文介绍如何使用Tornado、SQLAlchemy和Alembic搭建一个假单(出勤)统计系统。通过Tornado的非阻塞异步处理,结合ORM框架SQLAlchemy和数据迁移工具Alembic,实现对sqlite3数据库的高效操作。文章详细阐述了环境准备、目录结构、数据库设置以及基础代码编写,包括全局配置、数据库操作和基础页面设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

距离上一次写博客已经有些日子了,之前的阎王殿工程由于未能明确脑洞的方向无疾而终,但相关的技术已转为了我的技术储备。在这半年里,我使用Tornado搭建了工作中所用的内部网站,对于Tornado的相关开发也有了一定的体会。因此,我决定再写一个关于Tornado的系列建站教程,这次我们要搭建一个假单(出勤)统计系统,可以统计员工每周的请假和出勤情况。

一 框架和工具

在这个系列中,我将选择以下工具和框架作为后端开发工具:

  • Web框架:Tornado
  • ORM框架:SQLAlchemy+Alembic
  • 数据库:sqlite3
  • 反向代理服务器:Nginx
  • 自己挑个顺手的IDE,我这里使用pycharm

1 Tornado介绍

与Django相同,Tornado是另一种流行的python框架。它的特点是在处理I/O时采用非阻塞异步方式,这使得它可以非常快地处理大量I/O操作。与Django相比,Tornado算是个轻量级框架,它本身并不提供像Django中的那些Form类以及ORM框架,而是单纯提供web服务以及服务器相关的模块。这使得我们可以快速地搭建起一个网站的架子,但同时我们也不得不去寻找其他的ORM框架,比如SqlAlchemy。

2 SQLAlchemy

使用ORM框架,我们可以将数据库中的表和对象建立映射,从而便于我们对表进行操作。在Django中,由于Django自己提供了一套ORM框架,因此我们无需使用其他的ORM框架。然而,Tornado是个轻量级的web框架,并没有提供自己的ORM框架。因此,我们选用SQLAlchemy作为我们的ORM框架。通过使用SQLAlchemy,我们可以很容易地实现对数据的增删改查以及建立表等操作。然而,SQLAlchemy没有提供修改表结构的操作,所以我们需要引入Alembic来做数据迁移。

3 Alembic

Alembic是一款搭配SQLAlchemy使用的数据迁移工具,与SQLAlchemy是同一作者。Alembic用于给已使用了SQLAlchemy建立映射的表添加新的字段,或直接使用其建立新表。它的感觉有点像git,每一次对数据库的改动都会自动产生一个版本号,在写好相应的升版操作后,将数据库升级到新版即可。

4 Sqlite3和Nginx

这两个是我们的老朋友了,在这里就不在赘述了。

二 环境准备

首先安装好python,这里选用python3.9。安装好后用pip将tornado和SQLAlchemy还有Alembic安装好。

随后打开pycharm,建立我们的工程,我这里工程名叫LeaveManage,如图所示:

这里大家可以选择建立一个虚拟环境,也可以选择直接使用本机的环境。使用虚拟环境的好处是,我们可以给每个不同的Python建立属于自己的环境,相对“干净”一些。由于我们之前已经安装了相关的库,这里可以把Inherit global site-packages勾上,让虚拟环境直接把我们安装好的库复制过来。

点击Create,建立工程。

三 目录结构

我们在工程中新建一些包和文件夹,最终的目录结构如下所示:

  • database包:在这个包中存放各种表的类以及CURD操作方法。
  • migrate文件夹:我们将这个文件夹作为Alembic环境,之后所有对数据库的表结构修改都在这里进行。
  • server文件夹:在这个文件夹下存放我们的主程序,在template文件夹下存放我们之后的各种前端模板。
  • setting包:我们在这个文件夹下会建立一个配置文件,在里面存放一些配置信息;以及我们需要一些util方法来读取这些配置信息。
  • venv:我们建立的虚拟环境,如果你没有建立虚拟环境,就不会有这个文件夹。

四 开始写code

在这篇博客中,我们先把整个网站的架子搭好,包括:

  1. 建立全局配置文件以及写好读取配置的util方法
  2. 数据库的util方法
  3. 使用Alembic建立三张表
  4. 写一个简单的index页面,配置好nginx,并将Tornado跑起来

我们在setting里建立globalsettings.py文件,在这个文件里我们将存放一些配置以及读取配置文件的方法。<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值