当前位置:首页>python>Text2SQL 和 Text2Python 的 MCP 实现

Text2SQL 和 Text2Python 的 MCP 实现

  • 2026-02-24 21:35:57
Text2SQL 和 Text2Python 的 MCP 实现
把自然语言变成SQL 查询、把需求描述变成可执行的 Python 程序,这两件事听起来像“让模型写两段字符串”。但真正落地时,你很快会遇到三类硬问题:
上下文怎么给:数据库 schema、业务词表、样例值、运行时约束……怎么稳定、标准化地提供给模型?
动作怎么做:SQL 到底在哪执行?Python 在什么隔离环境里跑?失败怎么回滚?
安全怎么兜底:提示注入、越权读写、工具链漏洞、审计与授权……不处理就不可能上线。
MCP(Model Context Protocol)的价值,恰好是把“给上下文”和“让模型做动作”这两件事,从具体模型/具体应用里抽离出来,做成标准接口:Host(LLM 应用)↔ Client(连接器)↔ Server(能力提供方),通信基于JSON-RPC 2.0、支持能力协商、并且把Resources / Tools / Prompts做成统一语义。 
下面这篇文章按“从零开始”的方式,给出一套Text2SQL + Text2Python 的 MCP Server 设计与实现骨架,并把关键原理讲透:怎么把它做成真正可用、可控、可评估的工程系统。

1. 先对齐:你要做的是“Text2SQL/2Python”,还是“可上线的查询/执行系统”?

很多 Text2SQL Demo 的隐含前提是:
  • schema 很小
  • 没有权限边界
  • 执行环境随便跑
  • 出错就把报错丢回模型再试
而现实里,Text2SQL 的标杆数据集(如 Spider / BIRD)之所以难,是因为它考察的是跨库泛化、复杂查询、真实数据值、以及执行正确性
  • Spider 1.0:10,181 个问题、200 个多表数据库、复杂 SQL,训练/测试库不重合,强调对新 schema 的泛化。 
  • BIRD:12,751 对 question-SQL,95 个大库,总数据量 33.4GB,强调“脏值/外部知识/效率”等真实问题。 
这意味着:你的 MCP 实现不能只产出 SQL 字符串,而要产出一个可控系统:
  • 能把正确的 schema 片段喂给模型(减少噪声)
  • 能把 SQL 安全地执行在受控连接上(只读/超时/限行数)
  • 能把执行反馈(错误、统计、Explain)结构化返回给模型做自修复
  • 能审计、能授权、能升级

2. MCP 在这里怎么用:Resources / Tools / Prompts 的职责边界

MCP 的三类能力建议这样切: 

2.1 Resources:把“上下文”做成可寻址、可缓存的对象

典型资源:
  • db://schema/{db}:库级 schema(表/列/类型/外键)
  • db://dict/{db}:业务词表/字段别名/枚举含义
  • runtime://python:Python 沙箱能力说明(允许包、资源限制、禁网等)
  • Resources 的关键不是“内容多”,而是稳定、可复用、可做缓存与权限控制

2.2 Tools:把“动作”做成可审计、可限权的函数

典型工具:
  • sql.execute(sql, params, db, max_rows, timeout_ms):执行只读 SQL
  • sql.explain(sql, db):Explain/Query Plan
  • python.run(code, files, limits):在隔离环境运行代码并返回 stdout/stderr/产物摘要
  • MCP 规范强调工具调用需要清晰的用户授权/控制语义,并提醒“工具代表任意代码执行路径,必须慎重”。 

2.3 Prompts:把“最佳实践提示词模板”变成可复用资产

例如:一个专门用于 Text2SQL 的 prompt 模板,强制模型先做 schema linking 再产出 SQL AST。

3. Text2SQL 原理拆解:从 Schema Linking 到“可执行正确性闭环”

把 Text2SQL 做成工程系统,一般是下面这条流水线(你可以把它映射成 Host 侧 Agent 的多步调用,也可以封装进 Server 侧工具里)。

3.1 Schema Linking:决定“给模型哪些表/列”

LLM Text2SQL 的一个核心工程技巧是 schema linking:先筛选相关表/列,再让模型生成 SQL,减少噪声与 token 成本。但 schema linking 本身也有风险:漏召回关键列会直接导致不可修复的错误;过度裁剪会破坏结构完整性。RSL-SQL 这类工作专门讨论了这些风险并用双向链接、上下文增强与多轮自修正来提高召回。 
工程实现上,schema linking 通常是三路信号融合:
  • 词面匹配(字段别名、同义词、分词/拼写变体)
  • 向量检索(question ↔ column/table description)
  • 结构约束(外键路径、join 可达性)
关键点:别把 linking 当成一次性过滤器,而要当成“候选生成器 + 风险兜底机制”。实践里会保留一个full schema 模式和一个linked schema 模式,失败时回退或投票。

3.2 SQL 生成:别让模型“自由写字符串”

生产系统里建议至少做到“两层约束”:
  1. 结构化输出:让模型输出 SQL 的结构(AST/JSON),再由你序列化成 SQL
  2. 语法解析与白名单:生成后用解析器(如 sqlglot)解析,确保单语句、只读、禁用危险关键词

3.3 执行与反馈:执行正确性 > 字符串相似

Spider/BIRD 这类基准都强调执行维度。 
工程上,执行层要做的不是“跑一下”,而是:
  • 强制只读连接 / 只读事务
  • 超时、限行数、限返回列宽
  • Explain 成本阈值(防止全表扫爆库)
  • 把数据库错误结构化返回给模型(错误码/位置/期望类型)
这样你才能构建自修复闭环:模型 → 执行 → 结构化报错 → 模型修正 → 再执行。

4. Text2Python 原理拆解:把“写代码”变成“受控执行任务”

Text2Python 真正的难点不是生成代码,而是安全、可重复、可诊断

4.1 先定义 I/O 合同(Contract)

在让模型写代码之前,你要先让系统明确:
  • 输入:有哪些变量、类型、数据规模上限
  • 输出:返回值结构(JSON/表格/文件)
  • 约束:是否允许网络、允许哪些包、时间/内存限制
没有 contract,模型只会“写到能跑为止”,并且难以评估。

4.2 沙箱:不要幻想“Python 里限制 builtins 就安全”

安全执行 Python 的底线是进程级隔离(容器/虚拟机/受限用户),并配合:
  • 禁网
  • 限 CPU/内存/文件大小
  • 限系统调用(seccomp 等)
  • 只读文件系统(或限定工作目录)
如果你把 Python 直接 exec() 在服务进程里,迟早会出事故。

4.3 诊断闭环:让模型基于“可操作反馈”修复

你要返回的不是“失败了”,而是:
  • stdout / stderr(截断策略)
  • 异常类型 + 栈
  • 运行时统计(耗时/内存)
  • 可选:单测结果、lint/type check 结果

5. 用 MCP Python SDK(FastMCP)搭两个 Server

下面用 MCP 官方 Python SDK 的FastMCP写骨架。官方文档与 Quickstart 的写法是:
from mcp.server.fastmcp import FastMCP
用 
@mcp.tool() / @mcp.resource()
 注册能力,然后 
mcp.run() 
启动。 

STDIO 模式日志注意:不要向 stdout 打日志,会破坏 JSON-RPC 消息;写 stderr 或用 logging。 

5.1 依赖与目录

uv init mcp-text2cd mcp-text2uv venv && source .venv/bin/activateuv add "mcp[cli]" sqlalchemy sqlglot pydantic
(SQL 驱动按需加:psycopg、pymysql 等)

6. SQL MCP Server:schema 资源 + 安全执行工具

6.1 关键设计点

资源:提供 schema(并可加入字段别名、注释、样例值摘要)
工具:执行 SQL(只读、单语句、自动补 LIMIT、超时、限行数)
返回结构:建议用 JSON(便于模型稳定消费),FastMCP 支持 json_response=True。 ()

6.2 示例代码(骨架)

# sql_server.pyfrom __future__ import annotationsimport osfrom typing import AnyOptionalimport sqlalchemy as saimport sqlglotfrom mcp.server.fastmcp import FastMCPfrom pydantic import BaseModelmcp = FastMCP("text2sql", json_response=True)ENGINE_URL = os.environ.get("DB_URL""sqlite:///./demo.db")engine = sa.create_engine(ENGINE_URL, future=True)class QueryResult(BaseModel):    columns: list[str]    rows: list[list[Any]]    row_count: int    truncated: booldef _is_readonly(ast: sqlglot.Expression) -> bool:    # 只允许 SELECT(可按需扩展到 WITH + SELECT)    return ast.key.upper() in {"SELECT""WITH"}def _normalize_sql(sql: str) -> str:    # 禁止多语句    if ";" in sql.strip().rstrip(";"):        raise ValueError("Multiple statements are not allowed.")    return sql.strip().rstrip(";")@mcp.resource("db://schema")def get_schema() -> str:    """Return database schema (tables/columns/types)."""    insp = sa.inspect(engine)    out = []    for t in insp.get_table_names():        cols = insp.get_columns(t)        out.append(            {                "table": t,                "columns": [{"name": c["name"], "type"str(c["type"])} for c in cols],                "pk": insp.get_pk_constraint(t).get("constrained_columns", []),                "fks": insp.get_foreign_keys(t),            }        )    return sa.json.dumps(out)  # 或者用 json.dumps@mcp.tool()def sql_execute(sql: str, max_rows: int = 200) -> QueryResult:    """Execute a read-only SQL query safely.    Args:        sql: SQL statement (SELECT only).        max_rows: Maximum rows to return (truncate if exceeded).    """    sql = _normalize_sql(sql)    ast = sqlglot.parse_one(sql)    if not _is_readonly(ast):        raise ValueError("Only SELECT queries are allowed.")    # 可选:自动补 LIMIT(示意,生产建议更严谨)    if "LIMIT" not in sql.upper():        sql = f"{sql} LIMIT {max_rows + 1}"    with engine.connect() as conn:        res = conn.execute(sa.text(sql))        cols = list(res.keys())        rows = res.fetchmany(max_rows + 1)    truncated = len(rows) > max_rows    rows = rows[:max_rows]    return QueryResult(        columns=cols,        rows=[list(r) for r in rows],        row_count=len(rows),        truncated=truncated,    )if __name__ == "__main__":    mcp.run(transport="stdio")
你应该在生产里补齐的部分(但骨架先跑通):
  • 超时:驱动级/连接级 statement_timeout(Postgres)或应用侧 kill
  • Explain:单独 sql_explain 工具,做 cost 阈值
  • 权限:只读账号 + schema 白名单
  • 参数化:避免模型直接拼接值(尤其文本条件),要求传 params 并在服务端绑定

7. Python MCP Server:隔离执行 + 结构化结果

7.1 两种落地方式

  1. 方式 A(推荐):在 MCP Server 里调用“沙箱执行器”(容器/微虚拟机/受限用户进程),Server 只负责编排与回传结果
  2. 方式 B(仅本地 Demo):subprocess + 资源限制(不等于强安全,但能展示闭环)

7.2 示例代码(本地 Demo 骨架)

# python_server.pyfrom __future__ import annotationsimport subprocessimport tempfilefrom typing import Anyfrom mcp.server.fastmcp import FastMCPfrom pydantic import BaseModelmcp = FastMCP("text2python", json_response=True)class PyRunResult(BaseModel):    exit_code: int    stdout: str    stderr: str@mcp.tool()def python_run(code: str, timeout_s: int = 3) -> PyRunResult:    """Run python code in a subprocess (demo sandbox).    Args:        code: Python code to execute.        timeout_s: Execution timeout.    """    with tempfile.TemporaryDirectory() as td:        p = subprocess.run(            ["python""-I""-c", code],  # -I: isolate (no user site-packages)            cwd=td,            capture_output=True,            text=True,            timeout=timeout_s,        )        return PyRunResult(            exit_code=p.returncode,            stdout=p.stdout[-8000:],  # 截断策略            stderr=p.stderr[-8000:],        )if __name__ == "__main__":    mcp.run(transport="stdio")

重要-I 只能减少环境污染,不等于安全隔离。真正要上线,还是要进程级隔离 + 禁网 + 配额。

8. “把 Text2SQL/Text2Python 封装进 MCP Tool”——用 Sampling 做 Server 侧生成(可选高级)

如果你希望 Host 只调用一个工具:text2sql.query(question),由 Server 自己完成“生成→执行→修复”,可以用 MCP 的Sampling:Server 在工具内部请求 Host 提供一次 LLM 采样。Python SDK 示例是 ctx.session.create_message(...)。
这时你的 Server 就能实现一个完整闭环:
  1. 读 db://schema
  2. 采样生成 SQL(结构化输出)
  3. sql_execute 执行
  4. 失败则把报错回喂再采样修复(限定轮次)
注意:MCP 规范对 sampling 的用户控制有明确要求(是否采样、发送的 prompt、返回结果可见性等)。 

9. 安全与攻防:MCP + 执行动作 = 必须默认“零信任”

当你把“读数据、跑代码、改文件”的能力接给模型,安全问题会从“模型胡说”升级为“模型能做事”。MCP 规范本身就把安全与用户控制作为关键原则。 
再强调两个现实教训(都是真实发生过的类型):
  • 工具链漏洞:官方 MCP Git Server 曾出现路径校验问题(CVE-2025-68145),需要升级修复版本;本质是“工具提供文件系统能力时,边界校验必须严密”。 
  • 间接提示注入:来自外部资源(文档、工单、网页)的文本可能携带“隐藏指令”,诱导模型越权调用工具。Microsoft 给出过针对 MCP 场景的缓解建议(隔离指令与数据、最小权限、显式用户确认等)。 
上线清单(最低限)
  • SQL:只读账号、schema 白名单、限时限量、Explain 阈值、审计日志
  • Python:容器/VM 隔离、禁网、配额、工作目录白名单、产物扫描
  • MCP:工具调用需要明确授权 UI、敏感资源需要 OAuth/Token、版本升级与漏洞跟踪

10. 真正要追求的指标:可评估、可回归、可演进

Text2SQL:建议用 Spider/BIRD 风格的“执行正确性”做回归思路,至少在你的业务库上建立query 测试集 + 可执行断言(行数、聚合结果、关键字段)。 
Text2Python:用“单测 + 输出契约 + 资源上限”做回归,把“能跑”变成“稳定产出”。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-28 18:07:21 HTTP/2.0 GET : https://f.mffb.com.cn/a/475750.html
  2. 运行时间 : 0.165033s [ 吞吐率:6.06req/s ] 内存消耗:4,461.13kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c694e471c5927696333297c6f374e72e
  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.000740s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000556s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000274s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000257s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000475s ]
  6. SELECT * FROM `set` [ RunTime:0.000193s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000562s ]
  8. SELECT * FROM `article` WHERE `id` = 475750 LIMIT 1 [ RunTime:0.003432s ]
  9. UPDATE `article` SET `lasttime` = 1772273241 WHERE `id` = 475750 [ RunTime:0.007975s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000272s ]
  11. SELECT * FROM `article` WHERE `id` < 475750 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000489s ]
  12. SELECT * FROM `article` WHERE `id` > 475750 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000491s ]
  13. SELECT * FROM `article` WHERE `id` < 475750 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000670s ]
  14. SELECT * FROM `article` WHERE `id` < 475750 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.005124s ]
  15. SELECT * FROM `article` WHERE `id` < 475750 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000857s ]
0.166658s