实习手册六(Python基于Tornado框架的接口响应服务)在Tornado实现对数据库的操作功能

目录

前言

在Tornado框架中嵌入我们的数据库处理模块。

1、在Tornado框架中嵌入我们的数据库处理模块

2、使用Postman来测试接口

结语


前言

手册目录:

软件下载及环境安装:

实习手册一(基于Tornado框架的接口响应服务)软件下载与环境配置

Tornado基本框架搭建:

实习手册二(基于Tornado框架的接口响应服务)Tornado基本框架的搭建

Tornado框架中日志的记录,路由的分发,接口的响应:

实习手册三(基于Tornado框架的接口响应服务)Tornado框架中日志的记录,路由的分发,接口的响应

通过PyMySQL,SQLAlchemy在PyCharm中实现对数据的增删改查:

实习手册四(基于Tornado框架的接口响应服务)通过PyMySQL,SQLAlchemy在PyCharm中实现对数据的增删改查

SqlAlchemy的再封装,PyMySQL和SqlAlchemy的结合使用:

实习手册五(基于Tornado框架的接口响应服务)SqlAlchemy的再封装,PyMySQL和SqlAlchemy的结合使用

本章我们会将前几章的功能结合起来,在Tornado框架中嵌入我们的数据库处理模块。

在Tornado框架中嵌入我们的数据库处理模块。

1、在Tornado框架中嵌入我们的数据库处理模块

在前两章中,我们已经实现了通过pymysql+sqlalchemy实现了使用python代码来处理数据库,而且已经对sqlalchemy进行了封装,现在我们直接将上一章中的SqlAlBase,MysqlBase以及User类写入我们的Tornado框架中:

import datetime
import json
from tornado.web import RequestHandler
from tornado.web import Application
from tornado.ioloop import IOLoop
import pymysql
from sqlalchemy import create_engine, text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import MetaData
from sqlalchemy import Column, String, Integer


# URL用来作为SqlAlchemy创造引擎的url
# 格式为:"mysql+pymysql://root:你的mysql密码@localhost:3306/数据库名字"
URL = "mysql+pymysql://root:你的密码@localhost:3306/数据库名称"
class SqlAchBase():
    engine = create_engine(URL)
    base = declarative_base()
    session = sessionmaker(bind=engine)()
    metadata = MetaData()

    @classmethod
    def get_session(cls):
        return cls.session

class MysqlBase():
    session = SqlAchBase.get_session()
    conn = None

    # 测试连接方法
    @classmethod
    def TestConn(cls):
        if not cls.conn:
            cls.conn = pymysql.connect(user='root', host='localhost', password=你的密码, db=数据库名称, port=3306)
            print("trying to connect to '%s'" % cls.conn)

        else:
            print("already connected to '%s'" % cls.conn)

    # 增
    @classmethod
    def add(cls, user):
        cls.TestConn()
        cls.session.add(user)
        cls.session.commit()

    # 删
    @classmethod
    def delete(cls, filter):
        cls.TestConn()
        cls.session.query(cls).filter(text(filter)).delete(synchronize_session=False)
        cls.session.commit()

    # 改
    @classmethod
    def update(cls, filter, value):
        cls.TestConn()
        cls.session.query(cls).filter(text(filter)).update(value, synchronize_session=False)
        cls.session.commit()

    # 查
    @classmethod
    def query(cls, filter=None):
        cls.TestConn()
        if filter:
            item_list = cls.session.query(cls).filter(text(filter)).all()
            for item in item_list:
                print(item)
        else:
            item_list = cls.session.query(cls)
            for item in item_list:
                print(item)

class User(SqlAchBase().base, MysqlBase):
    __tablename__ = 'user'
    userid = Column(Integer, autoincrement=True, primary_key=True)
    uname = Column(String(30))
    pwd = Column(String(30))
    create_time = Column(String(30))


# 注册功能处理器
class RegisterHandler(RequestHandler):
    # 用来存储接口的请求参数
    data = None
    def post(self, *args, **kwargs):
        path = self.request.path.split('/')
        
        # 注意,这里是通过body传递了json格式的数据,tornado获取后会将其自动转化为字典
        self.data = json.loads(self.request.body)
        method = path[-1]
        if callable(getattr(self, method)):
            getattr(self, method)()
        else:
            self.write("404 not found")

    def register_user(self):
        user = User(uname=self.data['uname'], pwd=self.data['pwd'], create_time=str(datetime.datetime.now()))
        User.add(user)


app = Application([
    # 注册功能路由
    (r'/user/register/.*', RegisterHandler)
])

if __name__ == '__main__':
    app.listen(8888)
    IOLoop.current().start()

可以看到,我们这里写了一个RegisterHandler(注册处理器),用来响应注册功能,其中有一个register_user()方法,用来作为接口,来实现用户注册的功能。

2、使用Postman来测试接口

首先,我们要实现的是一个注册用户的功能,在前面我们已经提到过,Tornado框架中是通过路由来确定大的功能分区,再通过get或post方法来进行小功能的分发,其中,Tornado中实现小功能的部分是通过python代码中的def方法来实现的,其实可以理解成,一个方法对应的就是一个功能,同时一个接口对应的就是一个方法,Tornado中是通过接口来调用对应的功能的。

因此,我们如果想对功能进行测试的话,首先要学会测试接口,而Postman便是一个非常简易方便的用来测试接口的软件,之前没有了解过Postman的小伙伴们可以点击下方这个链接进行学习。

接口测试之Postman使用全指南(原来使用 Postman测试API接口如此简单)

首先,先进入我们的Workspaces界面,点击左侧栏加号来新建一个连接目录

 然后点击右侧的加号,来新建连接

 

然后将请求方式切换为Post,输入url,在body部分选中row,然后将Text切换为json

 

然后输入新注册的用户名,密码即可,时间会直接获取当前时间,详细见上方的代码

 然后点击send,即可发送请求,请求成功后结果栏会返回1,然后进入到navicat中进行查看

可以看到,已经成功添加了一条新数据,create_time格式可以通过后段的代码进行调整,这里不多做介绍。

结语

本章我们将Tornado框架和Mysql服务结合起来,通过请求接口传递对应参数便可以对数据库进行对应的处理,其他功能诸如删、改、查,都可以依照这个样式来实现,本章只是为了实现此功能而将代码全部放在一个python文件中,略显冗长请大家多多包容。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值