搭建Tornado Https服务器之Tornado连接MySql数据库(4-1基本操作)

    本章介绍Tornado连接Mysql数据库和一些简单的Sql语句,使用的工具是pymysql 关于pymysql驱动的学习 推荐菜鸟教程 关于包的安装使用pip安装,因为这是python3的包。我用的编辑器是sublime Text3当然vscode、pycahrm都可以,不影响学习。

在开始之前不知道大家对mysql的操作熟悉了没有,接下来我们会涉及两个table,一个users,一个classes,users我们在安装mysql的时候已经建过了,接下来我们来建classes。

一、战前准备,添加表格

1、首先打开Navicat,连接到数据库,增加表classes,添加下面的字段

2、然后,为了增加难度 ,我们在users表中增加外键

3、增加外键约束 

 

二、开始写代码 

1、创建一个空文件夹,名字随你命名,它将是我们的工程目录。我是在D盘根目录下创建了study。

2、在此目录下创建main.py文件和空文件夹handler,接下来我们用编辑器打开此目录。

3、在handler目录下创建userhandler.py,classhandler.py这个文件是我们写关于用户的请求的函数。关于什么是handler直接理解为处理url即可。下面是当前的目录结构

4、开始进入代码编写,首先在classhandler.py中写入下面代码,写一个新建班级的类,也就是新建班级的请求:

import tornado.web # 导入tornado模块
import pymysql #导入连接mysql的驱动模块


# 这是一个处理新建班级的请求类,继承tornado.web.RequestHandler
class NewClassHandler(tornado.web.RequestHandler):
    # 配置请求头,允许跨域,否者在浏览器调用的时候报错误
    def set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "*")
        self.set_header("Access-Control-Allow-Headers", "Content-Type")
        self.set_header("Access-Control-Allow-Methods", "POST,GET,OPTIONS")

    # 这个函数是必要的,有些浏览器或者测试工具在访问之前都会预先访问,你不写的话会导致出错的
    def options(self):
        self.finish()

    # 重写post请求函数,处理post请求
    def post(self):
        # 为了防止出错导致程序崩溃,我们需要捕获异常函数,并处理 
        try:
            # 从请求中获取参数,如果获取不到,我们赋值 None
            classname = self.get_argument('classname', None)
            # 对传入的参数进行判断,如果为空我们回复 error,并终止执行下去
            if not classname:
                # self.write()函数的参数为标准的json类型
                self.write({"error":"班级名称为空!"})
                return
            # 如果不为空那么开始访问数据库吧
            # 首先是sql语句
            sql = "insert into classes(classname) values('{0}')".format(classname)
            # 创建连接对象,相应的参数 意思依次为 主机ip 端口 数据库用户名 数据库用户密码 数据库名称
            conn = pymysql.connect(host='x.x.x.x', port=3306, user='root', passwd='root', db='test')
            # 创建连接游标,用于读写数据库
            cursor = conn.cursor()
            # 执行sql语句,并返回影响行数
            effect_row = cursor.execute(sql)
            # 提交数据
            conn.commit()
            # 关闭游标和连接
            cursor.close()
            conn.close()
            # 插入成功 那么影响函数是1
            if effect_row>0:
                self.write({"success":"插入班级信息成功"})
            else:
                self.write({"error":"插入班级信息失败"})
        except Exception as e:
            # 如果出现异常我们打印出来
            print(e)

5、我们在main.py中写main函数,启动函数,明确指向路由的路径和端口等参数配置

import sys
# 将handler目录下的文件放到和main.py文件同级目录下,便于我们引用
sys.path.append("./handler")
# 添加必要的tornado的模块
import tornado.ioloop
import tornado.web
# 从classhandler.py文件中导出写好的 类
from classhandler import NewClassHandler

# 写程序入口函数 main函数
def main():
    # 定义请求的路径和响应的请求类,此类会根据你发出的请求区分get 还是post而给予不同的处理
    application = tornado.web.Application([(r"/class/new", NewClassHandler)])
    # 绑定端口,单进程启动
    application.listen(8000)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()

三、下面我们来测试一下

1、首先执行主程序,也就是main函数

执行命令,因为我的是python2、python3双环境,因此python3代表python3.6你们如果单环境,就是python命令 

2、调用请求

首先打开测试接口的工具,我用的是postman 很强大的测试工具

 如果我们传入空参数会如何呢?

这款工具的强大之处是可以查看代码,点击图中的Code即可查看不同语言的请求代码

 接下来我们看看数据有没有数据

ok访问数据到此结束,接下来在下一章节我们来完善吧,因为我们不仅要学会插入还会更新 删除 查询

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖人称王某人的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值