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

Python实现MySQL输出在HTML中展示失败,寻求技术排查指导

问题排查与修正方案

核心问题及修复步骤

  • 列表直接插入HTML导致无效结构
    你将列表p直接通过%s插入HTML模板,最终生成的内容会是类似['<tr>...</tr>', '<tr>...</td>', ...]的字符串,这不是合法的HTML。需要把列表元素拼接成完整的HTML字符串,替换%(p)为%(''.join(p))。

  • HTML实体转义错误
    代码里的&lt;和&gt;会被浏览器解析成文本符号,而非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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 21:41:11