如何在SQLAlchemy中格式化输出,使用PrettyTable添加表头美化展示
实现方案
1. 安装依赖
首先安装表格格式化工具PrettyTable:
pip install prettytable
2. 调整代码
我们可以封装通用的打印函数,直接复用SQLAlchemy查询结果自带的列名作为表头,无需手动硬编码列名,修改后完整代码如下:
from prettytable import PrettyTable # 通用表格打印函数 def print_formatted_table(query_result, table_name): print(f'\nTable "{table_name}" : \n') rows = query_result.fetchall() if len(rows) < 1: print(f'\tTable "{table_name}" is empty!\n') return # 直接从查询结果获取列名作为表头 pt = PrettyTable(field_names=query_result.keys()) # 批量添加行数据 pt.add_rows(rows) # 打印格式化后的表格 print(pt) # 原有查询逻辑保持不变 p = select([persons]) st = select([persons,students]).where(students.c.id == persons.c.id) t = select([persons,teachers]).where(persons.c.id == teachers.c.person_id) cl = select([classes]) s_in_cl = select([students_in_class]) p1 = conn.execute(p) st1 = conn.execute(st) t1 = conn.execute(t) cl1 = conn.execute(cl) ss1 = conn.execute(s_in_cl) # 调用通用函数打印所有表格 print_formatted_table(p1, "persons") print_formatted_table(st1, "students") print_formatted_table(t1, "teachers") print_formatted_table(cl1, "classes") print_formatted_table(ss1, "students_in_class")
效果说明
输出会自动生成带边框、列对齐的格式化表格,datetime类型数据会自动规范展示,无需额外处理。如果需要调整表格样式,比如修改边框样式、列对齐方式,可以直接调用PrettyTable的内置属性和方法调整。
内容的提问来源于stack exchange,提问作者maksym
相关产品推荐
相关产品推荐

