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

如何对齐Python输出 实现SQL查询结果打印为规整对齐表格

Python打印SQL查询结果实现表格对齐的方法

错位原因

当前使用\t制表符对齐的方式不稳定:制表符默认按固定间隔(通常是8个字符)补位,一旦某单元格内容长度超过或不足制表位间隔,就会出现列错位。

解决方案

方法1:原生字符串格式化手动指定宽度(无需第三方依赖)

直接通过f-string的格式语法指定每列对齐方式和宽度,适合简单场景:

cursor.execute("SELECT * FROM game_log")
data = cursor.fetchall()

# 定义表头和对应列的宽度,可根据实际数据调整
headers = ["Date&Time", "Name", "Word", "Turns Given", "Turns Used", "Results"]
col_widths = [20, 15, 10, 12, 12, 10]

# 打印表头
for header, width in zip(headers, col_widths):
    print(f"{header:<{width}}", end="")
print()
# 打印分隔线
print("=" * sum(col_widths))
# 打印数据行
for item in data:
    for value, width in zip(item, col_widths):
        print(f"{str(value):<{width}}", end="")
    print()

格式说明:<代表左对齐,>代表右对齐,后面的数字为列的固定宽度,所有值先转成字符串避免数字类型报错。

方法2:动态计算列宽适配内容(无需第三方依赖)

如果不想手动指定宽度,可以自动计算每列的最长内容长度作为列宽,适配所有数据:

cursor.execute("SELECT * FROM game_log")
data = cursor.fetchall()

headers = ["Date&Time", "Name", "Word", "Turns Given", "Turns Used", "Results"]
# 合并表头和所有数据,统一转成字符串后计算每列最大宽度,加2作为边距
all_rows = [headers] + [list(map(str, row)) for row in data]
col_widths = [max(len(cell) for cell in col) + 2 for col in zip(*all_rows)]

# 打印表头
for header, width in zip(headers, col_widths):
    print(f"{header:<{width}}", end="")
print()
print("-" * sum(col_widths))
# 打印数据
for row in data:
    row_str = list(map(str, row))
    for cell, width in zip(row_str, col_widths):
        print(f"{cell:<{width}}", end="")
    print()

方法3:使用第三方库自动生成对齐表格

如果可以安装第三方库,用tabulate可以一键生成多种格式的对齐表格,无需手动调整格式:

  1. 先安装库:pip install tabulate
  2. 代码示例:
from tabulate import tabulate

cursor.execute("SELECT * FROM game_log")
data = cursor.fetchall()

headers = ["Date&Time", "Name", "Word", "Turns Given", "Turns Used", "Results"]
# tablefmt可选grid、pipe、plain等多种格式,可自行调整
print(tabulate(data, headers=headers, tablefmt="grid"))

内容的提问来源于stack exchange,提问作者Kalana Chandrasekara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:02