25 lines
853 B
Python
25 lines
853 B
Python
"""NL2SQL 查询结果的基础 Markdown 渲染。"""
|
|
from __future__ import annotations
|
|
|
|
from typing import Any
|
|
|
|
|
|
def _cell(value: Any) -> str:
|
|
"""将单元格转换为不会破坏 Markdown 表格的文本。"""
|
|
if value is None:
|
|
return ""
|
|
return str(value).replace("|", "\\|").replace("\r", " ").replace("\n", " ")
|
|
|
|
|
|
def render_markdown(columns: list[str], rows: list[dict[str, Any]]) -> str:
|
|
"""将列和行渲染成 Markdown 表格,空结果返回固定提示。"""
|
|
if not rows:
|
|
return "暂无数据。"
|
|
header = "| " + " | ".join(_cell(column) for column in columns) + " |"
|
|
divider = "| " + " | ".join("---" for _ in columns) + " |"
|
|
body = [
|
|
"| " + " | ".join(_cell(row.get(column)) for column in columns) + " |"
|
|
for row in rows
|
|
]
|
|
return "\n".join([header, divider, *body])
|