You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用类合并两个Python文件并整合为单个可运行文件

回答

完全可以实现两个需求:既可以不使用类完成原有全部功能,也可以将两个分离的文件合并为单个Python文件直接运行。


可行性说明

原代码中的DBClient类仅做了MongoDB连接初始化和两个操作方法的封装,没有用到必须依赖类特性才能实现的逻辑,完全可以通过全局变量+普通函数的写法实现完全一致的效果。

合并后的单文件无类实现代码

直接将以下代码保存为.py文件,安装好pymongo、flask、bson相关依赖后即可直接运行:

from bson import json_util
from pymongo import MongoClient
from flask import Flask, request, jsonify
import json

# 初始化MongoDB连接,替代原类构造函数中的连接逻辑
_mongo_client = MongoClient('localhost', 27017)
db_collection = _mongo_client.requests.requests_data

def get_data(request_id, email):
    req_record = db_collection.find_one({"requestId": request_id, "email": email})
    if req_record:
        req_record = json.loads(json_util.dumps(req_record))
        # 过滤值为Failed的字段
        for k, v in list(req_record.items()):
            if v == 'Failed':
                del req_record[k]
    return req_record

def update_status(request_id, tc, old_status, new_status):
    db_collection.update_one(
        {"requestId": request_id, tc: old_status},
        {"$set": {tc: new_status}}
    )

# 初始化Flask应用
app = Flask(__name__)

@app.route('/fetch_data', methods=['GET'])
def fetch_data():
    request_id = request.args.get('requestId')
    email = request.args.get('email')
    if not request_id or not email:
        return jsonify({"status": 400, "data": [], "info": "Invalid email or requestId"})
    resp_data = get_data(request_id, email)
    return jsonify({"status": 200, "data": resp_data, "info": "OK"})

if __name__ == '__main__':
    app.run()

逻辑一致性说明

  • 上述代码和原双文件+类实现的功能完全对齐,没有删减任何原有逻辑
  • MongoDB连接在Flask启动时初始化一次,后续所有请求复用该连接,和原类实例化后持有连接的行为完全一致,不会出现重复创建连接的性能问题
  • 原代码中定义的update_status方法也完整保留,后续需要调用时直接传入对应参数即可

内容的提问来源于stack exchange,提问作者Sagar G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:01:07