如何将数据库多表查询结果转换为指定结构HTML表格,DataFrame是否为最优方案
解决方案
使用Pandas的DataFrame是实现该行列转换需求的最优方案之一,针对动态变化的风险短语字段不需要额外修改查询逻辑,代码实现非常简洁:
实现步骤
- 先将数据库查询得到的原始数据转换为DataFrame格式,你可以直接用
pandas.read_sql()方法读取SQL查询结果,省去手动解析的步骤 - 调用
pivot_table方法完成透视转换,代码示例如下:
import pandas as pd # 假设df是你拿到的原始DataFrame df_pivot = df.pivot_table( index="StorageLocation", columns="RiskPhrase", values="Quantity", fill_value=0 ).reset_index() # 如果需要输出HTML表格直接调用to_html方法 html_result = df_pivot.to_html(index=False, classes=["s-table"], border=0)
替代方案
如果风险短语的取值固定,你也可以直接在SQL层面用行转列语法完成转换,不需要引入DataFrame处理逻辑:
以MySQL为例,示例SQL如下:
SELECT StorageLocation, SUM(IF(RiskPhrase='H225', Quantity, 0)) AS H225, SUM(IF(RiskPhrase='H226', Quantity, 0)) AS H226, SUM(IF(RiskPhrase='H300', Quantity, 0)) AS H300 FROM 你的表名 GROUP BY StorageLocation
内容的提问来源于stack exchange,提问作者Mehni Kaci
相关产品推荐
相关产品推荐

