Python实现MySQL输出在HTML中展示失败,寻求技术排查指导
问题排查与修正方案
核心问题及修复步骤
列表直接插入HTML导致无效结构
你将列表p直接通过%s插入HTML模板,最终生成的内容会是类似['<tr>...</tr>', '<tr>...</td>', ...]的字符串,这不是合法的HTML。需要把列表元素拼接成完整的HTML字符串,替换%(p)为%(''.join(p))。HTML实体转义错误
代码里的<和>会被浏览器解析成文本符号,而非HTML标签。直接使用<和>编写标签即可。表格无样式导致视觉上“消失”
默认HTML表格没有边框,即使内容正确也可能看不到。给<table>标签添加border="1"属性,或者用CSS设置边框样式,比如<table style="border-collapse: collapse;">,同时给<td>添加style="border:1px solid #000;"。虚拟主机环境下的文件路径与编码问题
确保文件写入路径在主机可访问目录下,建议使用绝对路径;写入文件时指定utf-8编码,避免乱码:open(filename, "w", encoding="utf-8")
修正后的完整代码
import mysql.connector import webbrowser import os # 虚拟主机建议使用绝对路径,获取当前脚本所在目录 current_dir = os.path.dirname(os.path.abspath(__file__)) filename = os.path.join(current_dir, 'python.html') conn = mysql.connector.connect(user='root', password='pswd#', host='mysql',database='crm') if conn: print ("Connected Successfully") else: print ("Connection Not Established") select_users = """SELECT * FROM users""" cursor = conn.cursor() cursor.execute(select_users) result = cursor.fetchall() p = [] # 直接使用HTML标签,添加表格样式 tbl = '<tr><td style="border:1px solid #000;">ID</td><td style="border:1px solid #000;">Name</td><td style="border:1px solid #000;">Email</td></tr>' p.append(tbl) for row in result: # 拼接整行标签,避免拆分添加 row_html = f'<tr><td style="border:1px solid #000;">{row[0]}</td><td style="border:1px solid #000;">{row[1]}</td><td style="border:1px solid #000;">{row[2]}</td></tr>' p.append(row_html) # 拼接列表为完整HTML字符串 table_content = ''.join(p) contents = '''<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta content="text/html; charset=utf-8" http-equiv="content-type"> <title>Python Webbrowser</title> </head> <body> <table style="border-collapse: collapse;"> %s </table> </body> </html> ''' % (table_content) def main(contents, filename): # 指定utf-8编码写入 with open(filename,"w", encoding="utf-8") as output: output.write(contents) main(contents, filename) webbrowser.open(filename) if(conn.is_connected()): cursor.close() conn.close() print("MySQL connection is closed.")
内容的提问来源于stack exchange,提问作者Reed
相关产品推荐
相关产品推荐

