从数据库DataFrame传递数据到HTML字符串遇报错求解决方案
解决将DataFrame数据填充到HTML字符串占位符的问题
首先咱们来定位你遇到的错误:你代码里的df1 = df['Names']是一个Pandas Series对象,当你用for i, r in df1.items()遍历它时,r其实就是单个的字符串(也就是每一行的名字值),而字符串根本没有to_dict()方法,这就是报错的原因啦。
根据你的需求,我给你两种常见场景的解决方案:
场景1:为每个名字生成独立的<h1>标签
如果你想让每个名字都对应一个<h1>,可以先批量生成所有h1标签,再拼接到HTML模板里:
import pandas as pd import psycopg2 from sqlalchemy import create_engine # 确保你的engine已经正确初始化 df = pd.read_sql('select * from "HUMANS".people_info Limit 100', con=engine ) # 定义基础HTML模板,预留h1内容的占位符 base_html = """ <!doctype html> <html lang="en"> <body> <div class="col-md-12 text-center"> {} </div> </body> </html> """ # 循环生成每个名字对应的h1标签 h1_list = [] for name in df['Names']: h1_list.append(f'<h1>{name}</h1>') # 把所有h1标签拼接成一个字符串 h1_content = '\n'.join(h1_list) # 填充到基础模板中得到最终HTML final_html = base_html.format(h1_content)
场景2:把所有名字放在同一个<h1>标签内
如果希望所有名字在同一个h1里展示(比如用逗号分隔),直接拼接名字字符串即可:
import pandas as pd import psycopg2 from sqlalchemy import create_engine df = pd.read_sql('select * from "HUMANS".people_info Limit 100', con=engine ) test = """ <!doctype html> <html lang="en"> <body> <div class="col-md-12 text-center"> <h1>{}</h1> </div> </body> </html> """ # 将所有名字拼接成一个字符串,用逗号分隔 names_combined = ', '.join(df['Names'].tolist()) # 填充占位符 final_html = test.format(names_combined)
另外补充一点:如果之后你需要处理整行数据(比如同时填充名字、年龄多个字段),那才需要用到to_dict(),但当前场景只需要单个列的字符串值,直接使用即可。
内容的提问来源于stack exchange,提问作者MRL
相关产品推荐
相关产品推荐

