tornado测试小demo

import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options
from tornado.options import options, define
from tornado.web import RequestHandler
from motor.motor_asyncio import AsyncIOMotorClient
import json
define("port", default=8000, type=int, help="服务器监听端口号")

conn = AsyncIOMotorClient()
db = conn.XM

class IndexHandler(RequestHandler):
    # 查询
    async def get(self, user_id):
        # 获取参数
        name = self.get_argument('name', None)
        # 如果有参数
        if name:
            # 进入数据库查询
            data = await db.aaa.find_one({'name': name}, {'_id': 0})
            # 如果查询结果存在
            if data:
                # 返回查询结果
                self.write({'code': 200, 'data': {'data': data}})
            else:
                # 如果查询结果不存在
                # 返回信息错误
                self.write({'code': 405, 'data': {'msg': '信息错误'}})
        # 如果没有查询条件
        else:
            data_list = []
            # 查询所有用户
            find_datas = db.aaa.find({}, {'_id': 0})
            # 处理查询到的结果集,并添加到列表data_list中
            async for i in find_datas:
                data_list.append(i)
            # 返回查询到的所有用户信息
            self.write({'code': 200, 'data': {'data': data_list}})

    # 添加新用户
    async def post(self, user_id, *args, **kwargs):
        # 获取参数
        name = self.get_argument('name', None)
        age = self.get_argument('age', None)
        # 查询该用户是否已存在
        find_data = await db.aaa.find_one({'name': name})
        # 如果存在
        if find_data:
            # 返回重复添加
            self.write({'code': 404, 'data': {'msg': '数据已存在,请勿重复添加'}})
        # 如果不存在
        else:
            # 将新的用户信息写入到数据库中
            userID = db.aaa.insert_one({'name': name, 'age': age})
            print(userID)
            # 返回添加成功的用户信息
            self.write({'code': 200, 'data': {'data': {'name': name, 'age': age}}})

    # 修改操作
    async def put(self, user_id, *args, **kwargs):
        # 该数据是从body中获取的,所以需要解码,并使用json.loads转换成对应格式(此处为dict)
        update_data = json.loads(self.request.body.decode('utf-8'))
        # 从dict中获取参数
        name, gender = update_data['name'], update_data['gender']
        # 查询该用户是否存在
        user = await db.aaa.find_one({'name': name})
        # 如果该用户存在,并且修改的信息也存在
        if user and gender:
            # 对此用户进行修改操作
            await db.aaa.update_many({'name': name}, {"$set": {"gender": gender}})
            # 返回该用户的最新信息
            self.write({'code': 200, 'data': {'data': {'name': name, 'gender': gender}}})
        # 如果不存在
        else:
            # 返回错误信息
            self.write({'code': 404, 'data': {'msg': '信息异常,修改失败'}})

    # 删除操作
    async def delete(self, user_id, *args, **kwargs):
        # 获取参数
        del_name = self.get_argument('name', None)
        # 查询该用户是否存在
        find_del_name = await db.aaa.find_one({'name': del_name})
        # 如果存在
        if find_del_name:
            # 使用remove进行删除(3.2版本之前用remove删除,3.2之后版本使用deleteOne删除)
            db.aaa.remove({'name': del_name})
            # 返回删除成功消息
            self.write({'code': 200, 'data': {'msg': '删除成功'}})
        # 如果该用户不存在
        else:
            # 返回错误信息
            self.write({'code': 404, 'data': {'msg': '信息错误'}})

if __name__ == "__main__":
    tornado.options.parse_command_line()
    app = tornado.web.Application([
        (r"/api/([a-fA-F0-9]{24})?", IndexHandler),
    ])
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.current().start()
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Tian丶Yuting

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

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

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

打赏作者

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

抵扣说明:

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

余额充值