当前位置:首页>python>用Python实现预算编制自动化:从手工Excel到数据驱动

用Python实现预算编制自动化:从手工Excel到数据驱动

  • 2026-08-21 13:35:47
用Python实现预算编制自动化:从手工Excel到数据驱动

用Python实现预算编制自动化:从手工Excel到数据驱动

引子:预算编制的"无限循环"

每年四季度,财务BP最头疼的事情来了——编预算。

业务部门报上来的数字"拍脑袋",财务拿历史数据去"砍",双方拉锯三个月,最终版本往往是谁都不满意但谁都不想再改的数字。更崩溃的是,刚定完没两个月,市场情况变了,又要重新调整。

"预算编制不是在填表,是在谈判。"

但谈判归谈判,如果底层数据工作能自动化,至少可以把"填表"的时间从两周压缩到两天,把精力留给真正需要判断力的假设讨论。

本文就展示如何用 Python 实现预算编制的全流程自动化——从历史数据分析到预测建模,再到预算模板自动生成。


传统预算编制的三大痛点

在动手之前,先梳理一下传统预算编制为什么这么痛:

痛点一:历史数据处理低效

预算编制的起点是历史数据。但实际操作中,BP 需要从 ERP 导出 12-36 个月的数据,手动整理成分析格式。光是"对齐口径"就要花大量时间。

痛点二:预测方法过于粗放

多数企业的预算增长假设就是"去年 ×(1 + 增长率)"。增长率怎么来?要么是管理层拍一个数,要么是参考行业均值。这种"一刀切"忽略了各业务线的真实趋势差异。

痛点三:调整困难,版本混乱

预算一旦下发,遇到市场变化需要调整。但 Excel 模板层层嵌套,改一个假设就要手动更新十几张表,还容易出错。


数据驱动预算方法:两个核心引擎

我们的方案用两个引擎替代"拍脑袋":

引擎一:历史趋势分析。用过去 24-36 个月的数据,通过时间序列模型(如 Prophet)自动拟合趋势,生成"基线预测"。这就像给预算一个"数据锚点"——不管最终怎么调,至少知道数据的起点在哪。

引擎二:业务驱动因素建模。收入不是凭空产生的,它由客户数、客单价、转化率等业务驱动因素决定。把驱动因素和收入建立关联,预算就不再是"一个总数",而是"一组可讨论的假设"。

类比:传统预算像"直接猜期末考试分数",数据驱动预算像"先分析每天学习时长和历次成绩,推算出一个合理范围,再讨论要不要加把劲"。

核心代码:预算自动化全流程

下面进入实战。我们以"某企业年度预算编制"为场景,逐步实现自动化。

⚠️ 注意:文中所有数据均为脱敏后的示例数据,变量名已通用化处理。

第一步:历史数据加载与趋势分析

预算编制的第一步是整理历史数据,计算各业务线的月度趋势。

用 Pandas 处理历史数据,为后续预测模型准备输入。
import pandas as pd
from decimal import Decimal

def prepare_history_data(history_path):
    """加载历史 36 个月的收入数据,按月汇总并计算趋势指标"""
    df = pd.read_excel(history_path, parse_dates=['report_date'])

    # 按月和业务线汇总收入,消除日度数据的波动噪声
    monthly = df.groupby([
        pd.Grouper(key='report_date', freq='ME'),
        'biz_line'
    ])['revenue'].sum().reset_index()

    # 计算 3 个月移动平均:平滑季节性波动,看清真实趋势
    monthly['ma_3m'] = monthly.groupby('biz_line')['revenue'].transform(
        lambda x: x.rolling(3, min_periods=1).mean()
    )
    return monthly

一句话总结:历史数据预处理的核心是"降噪"——用月度汇总和移动平均消除日常波动,让趋势信号更清晰。

第二步:用 Prophet 做收入预测

Prophet 是 Meta 开源的时间序列预测工具,特别适合有季节性波动的业务数据。它就像一个"自动趋势分析师"——你给它历史数据,它还你一条未来曲线。

安装 Prophet:pip install prophet
from prophet import Prophet

def forecast_revenue(monthly_df, biz_line, periods=12):
    """用 Prophet 预测未来 12 个月的收入趋势"""
    # Prophet 要求输入列名为 ds(日期)和 y(目标值)
    data = monthly_df[monthly_df['biz_line'] == biz_line].rename(
        columns={'report_date': 'ds', 'revenue': 'y'}
    )[['ds', 'y']]

    # 设置年度季节性:业务数据通常有年内波动规律
    model = Prophet(yearly_seasonality=True, daily_seasonality=False)
    model.fit(data)

    # 生成未来 12 个月的日期框架并预测
    future = model.make_future_dataframe(periods=periods, freq='ME')
    forecast = model.predict(future)

    # 只取预测部分,使用 Decimal 确保金额精度
    result = forecast.tail(periods)[['ds', 'yhat']].copy()
    result['forecast_revenue'] = result['yhat'].apply(
        lambda x: float(Decimal(str(x)).quantize(Decimal('0.01')))
    )
    return result

一句话总结:Prophet 的价值不是"预测一定准",而是提供一个数据驱动的基线——管理层可以在此基础上叠加业务判断,而不是从零开始猜。

第三步:业务驱动因素建模

光有趋势预测还不够。我们需要把收入拆解为业务驱动因素,让预算变成"可讨论的假设组合"。

这一步建立"收入 = 驱动因素 A × 驱动因素 B × ..."的模型结构。
from decimal import Decimal

def build_driver_model(driver_data):
    """基于业务驱动因素拆解收入预测,让预算假设可讨论"""
    # 收入 = 活跃客户数 × 客单价 × 复购率
    # 每个驱动因素单独预测,再组合计算
    driver_data['avg_unit_price'] = (
        Decimal(str(driver_data['revenue'])) / Decimal(str(driver_data['active_customers']))
    )
    driver_data['repurchase_rate'] = (
        Decimal(str(driver_data['return_customers'])) / Decimal(str(driver_data['active_customers']))
    )

    # 对各驱动因素分别计算同比增长率
    for col in ['avg_unit_price', 'repurchase_rate', 'active_customers']:
        driver_data[f'{col}_growth'] = driver_data[col].pct_change(12)

    # 用各因素的中位数增长率推算预算年度目标
    projected = driver_data.iloc[-1].copy()
    for col in ['avg_unit_price', 'repurchase_rate', 'active_customers']:
        growth = driver_data[f'{col}_growth'].median()
        projected[f'{col}_budget'] = projected[col] * (1 + growth)

    return projected

一句话总结:驱动因素建模的核心价值是"可拆解、可讨论"——管理层可以说"客单价增长假设太乐观",而不必否定整个预算数字。

第四步:预算模板自动生成

预测做完了,最后一步是把结果填入标准的预算模板,输出给各部门。

openpyxl 自动生成部门预算表,格式统一、数据准确。
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Border, Side

def generate_budget_template(forecast_df, dept_list, output_path):
    """根据预测结果自动生成各部门的预算模板"""
    wb = Workbook()

    # 表头样式:蓝色背景 + 白色加粗字体
    header_style = Font(bold=True, color='FFFFFF', size=11)
    header_fill = PatternFill(start_color='2F5496', fill_type='solid')
    thin_border = Border(
        left=Side(style='thin'), right=Side(style='thin'),
        top=Side(style='thin'), bottom=Side(style='thin')
    )

    for dept in dept_list:
        ws = wb.create_sheet(title=dept)
        headers = ['月份', '预算收入', '预算成本', '预算费用', '预算利润']
        for col, h in enumerate(headers, 1):
            cell = ws.cell(row=1, column=col, value=h)
            cell.font = header_style
            cell.fill = header_fill
            cell.border = thin_border

        # 填入预测数据,金额保留两位小数
        dept_data = forecast_df[forecast_df['dept'] == dept]
        for row_idx, row in enumerate(dept_data.itertuples(), 2):
            ws.cell(row=row_idx, column=1, value=row.month_label)
            ws.cell(row=row_idx, column=2, value=round(row.revenue, 2))
            ws.cell(row=row_idx, column=3, value=round(row.cost, 2))
            ws.cell(row=row_idx, column=4, value=round(row.expense, 2))
            # 利润 = 收入 - 成本 - 费用,用公式保持联动
            ws.cell(row=row_idx, column=5,
                    value=round(row.revenue - row.cost - row.expense, 2))

    # 删除默认空 Sheet
    wb.remove(wb['Sheet'])
    wb.save(output_path)

一句话总结:自动生成的预算模板不仅节省排版时间,更重要的是确保各部门格式一致、数据口径统一。


滚动更新机制:预算不是"一锤子买卖"

年度预算定完后,市场随时可能变化。我们建议建立月度滚动更新机制

运作方式

每月实际数据出来后,自动触发三步操作:

  1. 差异分析:自动计算实际 vs 预算的差异,标记偏差超过 10% 的科目。
  2. 预测修正:用最新数据重新运行 Prophet 模型,更新全年预测。
  3. 建议生成:基于修正后的预测,自动生成分季度的预算调整建议。
类比:滚动预算就像 GPS 导航——你设了目的地(年度预算),但每走一段路,系统会根据实时路况重新计算路线。

这种机制让预算从"年初定一次、年底看结果"变成"持续校准、动态管理"。


踩坑记录:两个真实问题

坑 1:Prophet 遇到"零收入月份"就崩溃

现象:某新业务线有几个月收入为零,Prophet 拟合后预测值出现负数。

原因:Prophet 默认假设数据是连续的,零收入和负增长在模型看来是合理的趋势下行。

解决:对收入为零的月份做特殊标记,在建模前用业务最小值(如月固定成本对应的最低收入)做下限约束。或者对新业务线改用简单移动平均,等数据积累够了再切换 Prophet。

# 设置预测值下限:收入不可能为负数
forecast['yhat'] = forecast['yhat'].clip(lower=0)
# 对成熟度不足的业务线,回退到简单移动平均
if data['y'].eq(0).sum() > len(data) * 0.2:
    forecast_value = data['y'].rolling(3).mean().iloc[-1]

坑 2:预算模板"改一处动全身"

现象:修改了收入假设后,利润表、现金流量表、部门 KPI 表全部需要对齐修改,手动改了一下午还有遗漏。

原因:Excel 模板之间靠硬编码的单元格引用关联,没有统一的"假设层"。

解决:在 Excel 模板中单独建一个"假设参数表"(Assumptions Sheet),所有计算表都引用这个表的参数。修改假设时只改一处,全表自动联动。

# 在预算 Excel 中创建独立的假设参数 Sheet
ws_assumption = wb.create_sheet(title='假设参数')
ws_assumption.cell(row=1, column=1, value='参数名称')
ws_assumption.cell(row=1, column=2, value='参数值')
assumptions = [
    ('收入增长率', 0.08),
    ('人工成本涨幅', 0.05),
    ('管理费用率', 0.12),
]
for idx, (name, value) in enumerate(assumptions, 2):
    ws_assumption.cell(row=idx, column=1, value=name)
    ws_assumption.cell(row=idx, column=2, value=value)

效果对比

预算编制自动化带来的改变是全方位的:

指标 改造前(手工) 改造后(Python) 提升幅度
历史数据整理 3 天 2 小时 92% ↓
预测方法 管理层拍脑袋 Prophet + 驱动因素模型 质的飞跃
模板生成耗时 2 天(含反复核对) 30 分钟 97% ↓
预算调整响应 1-2 周 1-2 天 85% ↓
假设可追溯性 散落在邮件和会议纪要里 统一参数表管理
跨部门协作效率 反复沟通对齐口径 统一模板、统一数据源 显著提升

总结

本文的核心收获:

  1. 数据驱动不等于"全自动":Prophet 提供基线预测,驱动因素模型提供可讨论的假设框架,最终预算仍然是"数据 + 判断"的产物。
  2. 自动化最大价值在"一致性":统一的数据源、统一的假设参数、统一的模板格式,消除"各部门各算各的"乱象。
  3. 滚动更新是预算管理的未来:从年度一次性编制,到月度动态校准,让预算真正成为管理工具而非形式主义。
💡 一句话总结:Python 预算自动化的核心价值不是"替人做决策",而是把预算编制从"数据苦力活"变成"假设讨论会",让 BP 的精力花在真正有价值的判断上。

下期预告:预算搞定了,EP05 我们将聚焦日常最高频的工作——用 Python 实现月度经营报表自动生成和管理驾驶舱搭建,让汇报也能"一键出图"。

互动问题:你们公司编制预算时,最头疼的是哪个环节?是历史数据整理、增长假设讨论,还是跨部门协调?欢迎在评论区聊聊你的经历!

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:41:48 HTTP/2.0 GET : https://f.mffb.com.cn/a/509895.html
  2. 运行时间 : 0.489492s [ 吞吐率:2.04req/s ] 内存消耗:4,546.16kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f2752db3484ab13cc15953404cb34a09
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001067s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001461s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.050287s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000777s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001593s ]
  6. SELECT * FROM `set` [ RunTime:0.000659s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001668s ]
  8. SELECT * FROM `article` WHERE `id` = 509895 LIMIT 1 [ RunTime:0.060883s ]
  9. UPDATE `article` SET `lasttime` = 1787294508 WHERE `id` = 509895 [ RunTime:0.001842s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000681s ]
  11. SELECT * FROM `article` WHERE `id` < 509895 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.031883s ]
  12. SELECT * FROM `article` WHERE `id` > 509895 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.028022s ]
  13. SELECT * FROM `article` WHERE `id` < 509895 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.030581s ]
  14. SELECT * FROM `article` WHERE `id` < 509895 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.078381s ]
  15. SELECT * FROM `article` WHERE `id` < 509895 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.019668s ]
0.492711s