当前位置:首页>python>AI + Python:财务人员的效率革命

AI + Python:财务人员的效率革命

  • 2026-03-27 13:15:38
AI + Python:财务人员的效率革命

AI + Python:财务人员的效率革命

副标题:10 个真实场景,让你的财务工作从手忙脚乱到游刃有余


写在前面

小李是某制造企业的财务专员,每月末的那几天,她的桌上总是堆满了密密麻麻的 Excel 表格。手动核对银行流水、合并各部门报销单、汇总各子公司利润表……加班到深夜是常态。

直到有一天,她的同事小张给她看了一段 Python 代码,不到 30 秒,3000 行的银行流水核对完毕,精准无误。

小李愣了半分钟,然后问:「这是 AI 帮你写的?」

「对,我就跟 AI 说了一下需求,它就给了我代码。」小张淡淡地说。

这就是本文想告诉你的:你不需要精通编程,只需要会描述问题,AI 就能帮你写出让工作效率翻倍的 Python 代码。


案例一:银行流水自动对账

背景

陈会计在一家连锁餐饮公司做出纳,每个月要核对公司银行账户与财务系统之间的流水差异。银行导出的是 Excel,财务系统导出的是另一个 Excel,格式完全不同——日期格式、金额正负号、摘要描述都不一样。

以前她要花整整两天来手动比对,眼睛都看花了,还经常漏掉几笔。老板催着要对账结果,她急得直冒汗。

她把需求告诉了 AI:「帮我写一个 Python 脚本,把银行流水 Excel 和财务系统流水 Excel 做自动比对,找出未匹配的记录。」

AI 给出了这段代码:

import pandas as pd

# 读取银行流水和账务系统数据
bank_df = pd.read_excel('bank_statement.xlsx')
sys_df = pd.read_excel('system_records.xlsx')

# 统一日期格式
bank_df['date'] = pd.to_datetime(bank_df['交易日期'])
sys_df['date'] = pd.to_datetime(sys_df['记账日期'])

# 统一金额(绝对值匹配)
bank_df['amount'] = bank_df['交易金额'].abs()
sys_df['amount'] = sys_df['借贷金额'].abs()

# 生成匹配 key(日期 + 金额)
bank_df['key'] = bank_df['date'].dt.strftime('%Y-%m-%d') + '_' + bank_df['amount'].astype(str)
sys_df['key'] = sys_df['date'].dt.strftime('%Y-%m-%d') + '_' + sys_df['amount'].astype(str)

# 找出未匹配记录
bank_only = bank_df[~bank_df['key'].isin(sys_df['key'])].copy()
sys_only  = sys_df[~sys_df['key'].isin(bank_df['key'])].copy()

# 写出结果
with pd.ExcelWriter('reconciliation_result.xlsx') as writer:
    bank_only.to_excel(writer, sheet_name='银行有_系统无', index=False)
    sys_only.to_excel(writer, sheet_name='系统有_银行无', index=False)

print(f'银行单边: {len(bank_only)} 笔,系统单边: {len(sys_only)} 笔')
print('对账结果已保存至 reconciliation_result.xlsx')

效果: 原来两天的工作,现在 30 秒完成。陈会计说:「我现在月末最轻松的活就是对账了。」


案例二:多部门报销单自动汇总

背景

王财务在集团财务部,负责汇总 12 个部门每月提交的报销明细。每个部门用的 Excel 模板格式略有差异——有的叫「报销金额」,有的叫「实报金额」,有的合并了单元格,有的没有表头……

以前她要先手动统一格式,再复制粘贴,每次至少花 4 小时,还容易出错。

她问 AI:「帮我写一个 Python 脚本,读取一个文件夹里所有部门的报销 Excel,自动汇总到一张总表,并按部门统计合计金额。」

import pandas as pd
from pathlib import Path

# 字段名映射
COLUMN_MAP = {
    '报销金额': 'amount', '实报金额': 'amount',
    '费用金额': 'amount', '金额': 'amount',
    '部门': 'dept', '申请部门': 'dept',
    '费用类型': 'category', '报销类型': 'category',
    '费用说明': 'description', '事由': 'description',
}

all_records = []
for file in Path('reports/').glob('*.xlsx'):
    try:
        df = pd.read_excel(file)
        df.rename(columns={k: v for k, v in COLUMN_MAP.items() if k in df.columns}, inplace=True)
        df['source_file'] = file.name
        if 'amount' in df.columns:
            df['amount'] = pd.to_numeric(df['amount'], errors='coerce')
            all_records.append(df)
    except Exception as e:
        print(f'读取 {file.name} 失败: {e}')

combined = pd.concat(all_records, ignore_index=True)
summary = combined.groupby('dept')['amount'].agg(['sum', 'count']).reset_index()
summary.columns = ['部门', '报销总额', '报销笔数']

with pd.ExcelWriter('expense_summary.xlsx') as writer:
    combined.to_excel(writer, sheet_name='明细汇总', index=False)
    summary.to_excel(writer, sheet_name='部门统计', index=False)

print(f'共汇总 {len(all_records)} 个文件,{len(combined)} 笔记录')

效果: 12 个文件、400 多条记录,10 秒汇总完毕,原来 4 小时的工作量瞬间消失。


案例三:PDF 发票批量信息提取

背景

刘总监所在的公司每月处理 500 张以上增值税发票,财务团队要逐一核对发票号码、金额、税率。纯手工操作不仅效率极低,还因录入出错差点引发税务风险。

她让 AI 写代码从 PDF 发票中批量提取关键信息:

import pdfplumber, re, pandas as pd
from pathlib import Path

def extract_invoice_info(pdf_path):
    info = {'file': Path(pdf_path).name, 'invoice_no': '',
            'invoice_date': '', 'buyer': '', 'seller': '', 'total': ''}
    try:
        with pdfplumber.open(pdf_path) as pdf:
            text = ''.join(p.extract_text() or '' for p in pdf.pages)

        patterns = {
            'invoice_no':   r'发票号码[::]\s*(\d+)',
            'invoice_date': r'开票日期[::]\s*([\d年月日]+)',
            'buyer':        r'购\s*买\s*方.*?名\s*称[::]\s*(.+)',
            'seller':       r'销\s*售\s*方.*?名\s*称[::]\s*(.+)',
            'total':        r'合\s*计.*?[¥¥]\s*([\d,]+\.?\d*)',
        }
        for key, pat in patterns.items():
            m = re.search(pat, text)
            if m:
                info[key] = m.group(1).strip().replace(',', '')
    except Exception as e:
        info['error'] = str(e)
    return info

results = [extract_invoice_info(f) for f in Path('invoices/').glob('*.pdf')]
df = pd.DataFrame(results)
df.to_excel('invoice_list.xlsx', index=False)
print(f'共提取 {len(df)} 张发票信息')

效果: 500 张发票 5 分钟提取完毕,准确率 95%+,剩余 5% 自动标注需人工复核。刘总监说:「以前这活要两天,现在交给实习生跑个脚本就行了。」


案例四:月度利润表自动生成与对比分析

背景

赵经理是某上市公司子公司财务负责人,每月要向集团汇报利润表,还要与上月、去年同期做对比分析,手动写备注说明差异原因,每月加班两个晚上。

import pandas as pd, openpyxl
from openpyxl.styles import Font, PatternFill, Alignment
from openpyxl.utils import get_column_letter

current   = pd.read_excel('profit_current.xlsx',    index_col=0)
last_m    = pd.read_excel('profit_last_month.xlsx',  index_col=0)
last_y    = pd.read_excel('profit_last_year.xlsx',   index_col=0)

df = pd.DataFrame({'本月': current['金额'], '上月': last_m['金额'], '去年同期': last_y['金额']})
df['环比变动']   = df['本月'] - df['上月']
df['环比变动率%'] = (df['环比变动'] / df['上月'].abs() * 100).round(2)
df['同比变动']   = df['本月'] - df['去年同期']
df['同比变动率%'] = (df['同比变动'] / df['去年同期'].abs() * 100).round(2)

wb = openpyxl.Workbook()
ws = wb.active
ws.title = '利润对比分析'

headers = ['科目','本月','上月','去年同期','环比变动','环比变动率%','同比变动','同比变动率%']
h_fill = PatternFill(fill_type='solid', fgColor='1F4E79')
for col, h in enumerate(headers, 1):
    c = ws.cell(row=1, column=col, value=h)
    c.fill = h_fill
    c.font = Font(bold=True, color='FFFFFF')
    c.alignment = Alignment(horizontal='center')

red   = PatternFill(fill_type='solid', fgColor='FFCCCC')
green = PatternFill(fill_type='solid', fgColor='CCFFCC')
for r, (idx, row) in enumerate(df.iterrows(), 2):
    ws.cell(row=r, column=1, value=idx)
    for c, val in enumerate(row, 2):
        cell = ws.cell(row=r, column=c, value=round(val,2) if pd.notna(val) else '')
        if c in [5,6,7,8] and isinstance(val, (int,float)):
            cell.fill = red if val < 0 else (green if val > 0 else cell.fill)

for col in range(1, len(headers)+1):
    ws.column_dimensions[get_column_letter(col)].width = 16

wb.save('profit_analysis.xlsx')
print('利润对比分析报告已生成')

效果: 原来两个晚上的工作,现在 1 分钟自动生成带颜色标注的对比分析表。赵经理说:「现在我终于有时间分析数字背后的原因了。」


案例五:应收账款账龄分析自动化

背景

周财务在一家贸易公司,手头有 2000 多条应收账款记录,老板每周要看账龄分析(30天内、30-60天、60-90天、90-180天、180天以上各有多少)。以前用 VLOOKUP + SUMIF 写一堆公式,每次刷新都战战兢兢怕出错。

import pandas as pd

df = pd.read_excel('ar_records.xlsx')
df['due_date']    = pd.to_datetime(df['到期日期'])
df['outstanding'] = pd.to_numeric(df['未收金额'], errors='coerce')
today = pd.Timestamp.today()
df['days_overdue'] = (today - df['due_date']).dt.days

def classify_aging(d):
    if d <= 0:   return '未到期'
    elif d <= 30:  return '1-30天'
    elif d <= 60:  return '31-60天'
    elif d <= 90:  return '61-90天'
    elif d <= 180: return '91-180天'
    else:          return '180天以上'

df['账龄'] = df['days_overdue'].apply(classify_aging)

aging_order = ['未到期','1-30天','31-60天','61-90天','91-180天','180天以上']
summary = df.groupby('账龄')['outstanding'].agg(['sum','count']).reindex(aging_order)
summary.columns = ['金额合计','笔数']
summary['占比%'] = (summary['金额合计'] / summary['金额合计'].sum() * 100).round(2)

by_customer = df.groupby(['客户名称','账龄'])['outstanding'].sum().unstack(fill_value=0)
by_customer['合计'] = by_customer.sum(axis=1)
by_customer = by_customer.sort_values('合计', ascending=False)

with pd.ExcelWriter('ar_aging_report.xlsx') as writer:
    summary.to_excel(writer, sheet_name='账龄汇总')
    by_customer.to_excel(writer, sheet_name='客户明细')
    df.to_excel(writer, sheet_name='原始数据', index=False)

print('账龄分析报告已生成')
print(summary)

效果: 2000 条记录 3 秒完成,还自动按客户拆分了明细。周财务说:「以前做这个要花半天,现在老板要看随时都能给。」



案例六:固定资产折旧批量计算

背景

林会计所在的公司有 600 多项固定资产,每月要计提折旧。以前她在 Excel 里一个个公式下拉,一旦有资产报废或新增,就要重新核查所有公式,经常搞错。

她让 AI 帮她写一个折旧批量计算脚本:

import pandas as pd
from dateutil.relativedelta import relativedelta

df = pd.read_excel('fixed_assets.xlsx')
df['purchase_date']     = pd.to_datetime(df['购入日期'])
df['original_value']    = pd.to_numeric(df['原值'], errors='coerce')
df['residual_rate']     = pd.to_numeric(df['残值率'], errors='coerce').fillna(0.05)
df['useful_life_years'] = pd.to_numeric(df['使用年限'], errors='coerce')

today = pd.Timestamp.today()

def calc_depreciation(row):
    if row['资产状态'] == '已报废':
        return 0
    depreciable = row['original_value'] * (1 - row['residual_rate'])
    monthly_dep = depreciable / (row['useful_life_years'] * 12)
    # 已折旧月数
    months_used = (today.year - row['purchase_date'].year) * 12 +                   (today.month - row['purchase_date'].month)
    total_months = int(row['useful_life_years'] * 12)
    if months_used >= total_months:
        return 0  # 已折旧完毕
    return round(monthly_dep, 2)

df['本月折旧额'] = df.apply(calc_depreciation, axis=1)

# 按资产类别汇总
summary = df.groupby('资产类别')['本月折旧额'].sum().reset_index()
summary.columns = ['资产类别', '折旧合计']

with pd.ExcelWriter('depreciation_report.xlsx') as writer:
    df.to_excel(writer, sheet_name='明细', index=False)
    summary.to_excel(writer, sheet_name='汇总', index=False)

total_dep = df['本月折旧额'].sum()
print(f'本月合计折旧: ¥{total_dep:,.2f}')
print(summary)

效果: 600 项资产一秒计算完毕,自动跳过已报废和已折旧完毕的资产,还按类别汇总了折旧总额。林会计说:「这个脚本给我省了每月至少 3 小时的时间,关键是再也不会算错了。」


案例七:费用预算执行进度自动预警

背景

蒋总助在公司负责费用管控,每个月要对比各部门的预算执行情况,超支的要及时预警,并发邮件给各部门负责人。以前这件事要手动查数据、写邮件,往往等发完邮件,已经是下午了。

import pandas as pd
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 读取预算与实际数据
budget = pd.read_excel('budget_2026.xlsx')
actual = pd.read_excel('actual_ytd.xlsx')

merged = budget.merge(actual, on=['部门', '费用科目'], suffixes=('_预算', '_实际'))
merged['执行率%'] = (merged['金额_实际'] / merged['金额_预算'] * 100).round(2)
merged['超支金额'] = merged['金额_实际'] - merged['金额_预算']

# 识别预警项:执行率 > 90% 或已超支
warning = merged[(merged['执行率%'] >= 90)].copy()
warning['状态'] = warning['执行率%'].apply(
    lambda x: '【严重超支】' if x > 100 else '【接近上限】'
)

# 按部门分组发邮件
dept_contacts = {
    '销售部': 'sales@company.com',
    '研发部': 'rd@company.com',
    '运营部': 'ops@company.com',
}

def send_alert_email(dept, rows, to_email):
    body = f"您好,以下是 {dept} 截至本月的费用预算预警情况:

"
    for _, r in rows.iterrows():
        body += (f"  {r['状态']} {r['费用科目']}:预算 {r['金额_预算']:,.0f} 元,"
                 f"已用 {r['金额_实际']:,.0f} 元,执行率 {r['执行率%']:.1f}%
")
    body += "
请及时关注并控制后续支出。

财务部"

    msg = MIMEMultipart()
    msg['Subject'] = f'【费用预警】{dept} 费用预算预警通知'
    msg['From'] = 'finance@company.com'
    msg['To'] = to_email
    msg.attach(MIMEText(body, 'plain', 'utf-8'))

    # 实际发送时取消注释
    # with smtplib.SMTP('smtp.company.com', 587) as s:
    #     s.starttls()
    #     s.login('finance@company.com', 'password')
    #     s.send_message(msg)
    print(f'预警邮件已准备 -> {to_email}')
    print(body)

for dept, email in dept_contacts.items():
    dept_warnings = warning[warning['部门'] == dept]
    if not dept_warnings.empty:
        send_alert_email(dept, dept_warnings, email)

warning.to_excel('budget_warning.xlsx', index=False)
print(f'共 {len(warning)} 条预警记录已导出')

效果: 预算监控从半天手工操作变成 1 分钟自动跑完,还能自动发邮件预警。蒋总助说:「以前我每月搞这个搞得很烦,现在都是自动的,我只需要看结果就行了。」


案例八:合同台账自动整理与到期提醒

背景

郑财务兼管公司合同台账,一共 200 多份合同,付款节点、到期日期五花八门。以前全靠手动在 Excel 里打标记,经常有合同到期了才发现,差点影响续签。

import pandas as pd
from datetime import datetime, timedelta

df = pd.read_excel('contracts.xlsx')
df['start_date']  = pd.to_datetime(df['合同开始日期'])
df['end_date']    = pd.to_datetime(df['合同到期日期'])
df['payment_date'] = pd.to_datetime(df['下次付款日期'], errors='coerce')

today = pd.Timestamp.today()

# 合同状态
def contract_status(end_date):
    days_left = (end_date - today).days
    if days_left < 0:      return '已过期'
    elif days_left <= 30:  return '即将到期(30天内)'
    elif days_left <= 90:  return '即将到期(90天内)'
    else:                  return '正常'

df['合同状态'] = df['end_date'].apply(contract_status)
df['剩余天数'] = (df['end_date'] - today).dt.days

# 付款提醒
def payment_alert(pay_date):
    if pd.isna(pay_date): return ''
    days = (pay_date - today).days
    if days < 0:       return '付款已逾期!'
    elif days <= 7:    return f'7天内需付款({days}天后)'
    elif days <= 30:   return f'30天内需付款({days}天后)'
    return ''

df['付款提醒'] = df['payment_date'].apply(payment_alert)

# 导出预警列表
expiring = df[df['合同状态'].str.contains('即将到期|已过期')]
payment_due = df[df['付款提醒'] != '']

with pd.ExcelWriter('contract_alerts.xlsx') as writer:
    expiring.to_excel(writer, sheet_name='到期合同', index=False)
    payment_due.to_excel(writer, sheet_name='付款提醒', index=False)
    df.to_excel(writer, sheet_name='全量台账', index=False)

print(f'即将到期合同: {len(expiring)} 份')
print(f'近期需付款合同: {len(payment_due)} 份')

效果: 200 多份合同的到期和付款情况一目了然,不再有遗漏。郑财务说:「现在每周一早上跑一遍,把提醒发给业务部门,再也没有漏过合同了。」


案例九:财务数据可视化仪表盘

背景

汪副总每月要向董事会汇报财务情况,以前都是 PPT 里贴表格,枯燥无味。她希望能有一个动态图表,让董事会看了一目了然。

import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots

# 模拟月度数据
months = ['1月','2月','3月','4月','5月','6月',
          '7月','8月','9月','10月','11月','12月']
revenue = [1200,1350,1180,1420,1580,1650,1700,1550,1800,1920,2100,2350]
cost    = [820, 900, 810, 950, 1020,1080,1100,1010,1150,1230,1340,1500]
profit  = [r-c for r, c in zip(revenue, cost)]
margin  = [round(p/r*100, 1) for p, r in zip(profit, revenue)]

fig = make_subplots(
    rows=2, cols=2,
    subplot_titles=('月度收入与成本', '月度净利润', '利润率趋势', '收入构成')
)

# 子图1:收入与成本柱图
fig.add_trace(go.Bar(name='收入', x=months, y=revenue, marker_color='
#2196F3'), row=1, col=1)
fig.add_trace(go.Bar(name='成本', x=months, y=cost,    marker_color='#FF5722'), row=1, col=1)

# 子图2:净利润折线图(正负着色)
colors = ['#4CAF50' if p >= 0 else '#F44336' for p in profit]
fig.add_trace(go.Bar(name='净利润', x=months, y=profit, marker_color=colors), row=1, col=2)

# 子图3:利润率折线
fig.add_trace(go.Scatter(name='利润率%', x=months, y=margin,
                          mode='lines+markers', line=dict(color='#9C27B0', width=2)), row=2, col=1)

# 子图4:全年收入饼图(按季度)
quarters = ['Q1','Q2','Q3','Q4']
q_rev = [sum(revenue[i*3:(i+1)*3]) for i in range(4)]
fig.add_trace(go.Pie(labels=quarters, values=q_rev, hole=0.4), row=2, col=2)

fig.update_layout(
    title_text='2026年度财务数据仪表盘',
    title_font_size=20,
    height=700,
    showlegend=True,
    barmode='group'
)
fig.write_html('finance_dashboard.html')
fig.show()
print('财务仪表盘已生成:finance_dashboard.html')

效果: 生成一个交互式 HTML 仪表盘,包含 4 个图表,董事会看了直呼「一目了然」。汪副总说:「以前我在 PPT 里贴了 10 张表,现在一个页面全搞定,还能鼠标悬停看具体数据。」


案例十:税务申报数据自动核查

背景

梁税务专员每月要在企业申报系统填写增值税申报表,数据来自财务系统导出的多张报表。以前人工核对,总担心数据填错,出了问题要被罚款甚至补税。

她让 AI 帮她写一个核查脚本,在填报前自动比对各数据来源的一致性:

import pandas as pd

# 读取三个数据源
sales     = pd.read_excel('sales_ledger.xlsx')       # 销售台账
purchase  = pd.read_excel('purchase_ledger.xlsx')     # 采购台账
invoice   = pd.read_excel('invoice_summary.xlsx')     # 发票汇总

# 统一金额格式
for df in [sales, purchase, invoice]:
    for col in df.select_dtypes(include='object').columns:
        try:
            df[col] = pd.to_numeric(df[col].str.replace(',',''), errors='ignore')
        except:
            pass

# 核查1:销售台账含税合计 vs 发票开具合计
sales_total   = sales['含税金额'].sum()
invoice_total = invoice[invoice['类型']=='销项']['价税合计'].sum()
diff1 = sales_total - invoice_total

# 核查2:进项发票合计 vs 采购台账
purchase_total = purchase['含税金额'].sum()
input_total    = invoice[invoice['类型']=='进项']['价税合计'].sum()
diff2 = purchase_total - input_total

# 核查3:应交增值税计算
output_tax = invoice[invoice['类型']=='销项']['税额'].sum()
input_tax  = invoice[invoice['类型']=='进项']['税额'].sum()
tax_payable = output_tax - input_tax

# 输出核查报告
print('=' * 50)
print('增值税申报前数据核查报告')
print('=' * 50)
print(f'【核查1】销售台账 vs 销项发票')
print(f'  销售台账含税合计: ¥{sales_total:>15,.2f}')
print(f'  销项发票价税合计: ¥{invoice_total:>15,.2f}')
print(f'  差异: ¥{diff1:>15,.2f}  {"【OK】" if abs(diff1) < 1 else "【需核查!】"}')
print()
print(f'【核查2】采购台账 vs 进项发票')
print(f'  采购台账含税合计: ¥{purchase_total:>15,.2f}')
print(f'  进项发票价税合计: ¥{input_total:>15,.2f}')
print(f'  差异: ¥{diff2:>15,.2f}  {"【OK】" if abs(diff2) < 1 else "【需核查!】"}')
print()
print(f'【本月应交增值税预估】')
print(f'  销项税额: ¥{output_tax:>15,.2f}')
print(f'  进项税额: ¥{input_tax:>15,.2f}')
print(f'  应交税额: ¥{tax_payable:>15,.2f}')
print('=' * 50)

# 导出核查报告
report = pd.DataFrame([
    {'核查项目': '销售台账 vs 销项发票', '台账金额': sales_total,
     '发票金额': invoice_total, '差异': diff1, '状态': 'OK' if abs(diff1)<1 else '需核查'},
    {'核查项目': '采购台账 vs 进项发票', '台账金额': purchase_total,
     '发票金额': input_total, '差异': diff2, '状态': 'OK' if abs(diff2)<1 else '需核查'},
])
report.to_excel('tax_check_report.xlsx', index=False)
print('核查报告已保存')

效果: 3 个数据源的核查,10 秒完成,自动标注有差异的项目。梁税务专员说:「现在申报前跑一遍这个脚本,心里就踏实多了,再也不担心填错数了。」


总结:AI 改变了什么?

通过上面 10 个案例,我们看到了一个共同的模式:

工作类型

传统耗时

AI+Python

效率提升

银行对账

2天

30秒

200倍+

报销汇总

4小时

10秒

1440倍+

发票提取

2天

5分钟

576倍+

利润分析

2晚

1分钟

960倍+

账龄分析

半天

3秒

7200倍+

折旧计算

3小时

1秒

10800倍+

预算预警

半天

1分钟

240倍+

合同台账

持续跟踪

每周1分钟

-

财务可视化

半天PPT

2分钟

150倍+

税务核查

2小时

10秒

720倍+

你不需要会写代码

这 10 个案例里的代码,没有一行是财务人员自己手写的——全部由 AI 生成

财务人员只需要:

  1. 描述清楚问题
    :「我有两个 Excel,格式不同,需要按日期和金额匹配,找出差异」
  2. 告诉 AI 你要的结果
    :「输出一个 Excel,包含两张 sheet,分别列出单边记录」
  3. 运行代码,看结果
    :不懂代码也没关系,先跑跑看

如何开始

第一步:安装 Python(从 python.org 下载,一键安装)

第二步:安装常用库

pip install pandas openpyxl pdfplumber plotly

第三步:打开 AI(ChatGPT/文心一言/通义千问),描述你的问题

第四步:把代码复制到文件,运行

python my_script.py

第五步:遇到报错?把报错信息粘给 AI,让它帮你修复


结语

技术不是财务人的壁垒,而是财务人的翅膀。

当你第一次看到 Python 脚本在 30 秒内完成了你两天的工作,你会发现:原来那些重复性的工作,本来就不该由人来做。

把机械的工作交给代码,把宝贵的时间留给思考、分析和决策——这才是财务人在 AI 时代应有的姿态。


最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-27 13:26:07 HTTP/2.0 GET : https://f.mffb.com.cn/a/481901.html
  2. 运行时间 : 0.084916s [ 吞吐率:11.78req/s ] 内存消耗:4,586.94kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c8544805a783f517fc7206d5fc194e7b
  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.000466s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000756s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000389s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000277s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000472s ]
  6. SELECT * FROM `set` [ RunTime:0.000192s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000517s ]
  8. SELECT * FROM `article` WHERE `id` = 481901 LIMIT 1 [ RunTime:0.000599s ]
  9. UPDATE `article` SET `lasttime` = 1774589167 WHERE `id` = 481901 [ RunTime:0.004596s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000248s ]
  11. SELECT * FROM `article` WHERE `id` < 481901 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000470s ]
  12. SELECT * FROM `article` WHERE `id` > 481901 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000365s ]
  13. SELECT * FROM `article` WHERE `id` < 481901 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002984s ]
  14. SELECT * FROM `article` WHERE `id` < 481901 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002350s ]
  15. SELECT * FROM `article` WHERE `id` < 481901 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003421s ]
0.086573s