山东大学软件学院项目实训-创新实训-角色疆界-会话数据响应与存储管理

一、开发工具

1、flask框架

        (1)简单、灵活但功能完善的web开发框架

        (2)项目中用于接收前端与会话有关的请求并相应,主要支持会话id生成、会话内容存储、会话查询、会话删除等功能。

2、mongoDB

        (1)面向文档的 NoSQL 数据库管理系统,高性能、高可用、易扩展,适用于处理大量的非结构化和半结构化数据。

        (2)非常适合存储会话这样的半结构化数据。

二、后端项目结构

  • util:内含Result.py文件,用于包装响应数据,如
    #包装正常讯息
    def wrap_result(data):
        return jsonify({"code": 200, "data": data})
    
    ok=wrap_result
  • data:
    • init.py:数据库连接接口
    • conversation_service.py:数据库操作接口,如会话保存:
      def save(conv):
          collection = get_database().conversation
          conv_exist = collection.find_one({"_id": conv["_id"]})
          return collection.insert_one(conv) if conv_exist is None \
              else collection.find_one_and_replace({"_id": conv["_id"]}, conv)
    • database.py:数据库类包装
      import pymongo
      
      class database(object):
      
          def __init__(self):
              self.host = "localhost"
              self.port = 27017
              self.databaseName = "项目实训"
              self.companyId = None
              self.func_dict = {"--host": self.set_host,"--port": self.set_port, "--databaseName": self.set_database}
      
          def set_username(self, value):
              self.username = value
      
          def set_password(self, value):
              self.password = value
      
          def set_host(self, value):
              self.host = value
      
          def set_port(self, value):
              self.port = value
      
          def set_database(self, value):
              self.databaseName = value
      
          def set_company_id(self, value):
              self.companyId = value
      
          def call(self, opts):
              for opt in opts:
                  self.set_key(opt)
      
          def set_key(self, opt):
              key, value = opt
              if value and isinstance(value, str):
                  value = value.strip()
              self.func_dict[key](value)
      
          def valid(self):
              return self.host is not None and \
                  self.port is not None and \
                  self.databaseName is not None
      
          def get_database(self):
              conn = pymongo.MongoClient(
                  f'mongodb://{self.host}:{self.port}/{self.databaseName}?authSource=admin')
              return conn[self.databaseName]
      
  • main.py:采用flask框架,响应前端请求,实现数据的增删改查。如会话获取:
    @app.route("/conv/<cid>", methods=['GET'])
    def conv(cid):
        conversation = conv_service.get_by_id(cid)
        return ok(conversation)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值