在HTML文件中使用Python的MYSQL输出

fxnxkyjh  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(119)

我是Python新手。我想使用Python在html文件中显示MYSQL输出。我有下面的代码。但是,它不工作,实际上没有给我一个错误,所以我不确定哪里出错了。我在线查看了资源,但由于我不确定我在寻找什么,不确定搜索什么来修复这个问题。

import mysql.connector
import webbrowser

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 = []

tbl = "<tr><td>ID</td><td>Name</td><td>Email</td></tr>"
p.append(tbl)

for row in result:
    a = "<tr><td>%s</td>"%row[0]
    p.append(a)
    b = "<td>%s</td>"%row[1]
    p.append(b)
    c = "<td>%s</td></tr>"%row[2]
    p.append(c)

contents = '''<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>Python Webbrowser</title>
</head>
<body>
<table>
%s
</table>
</body>
</html>
'''%(p)

filename = 'python.html'

def main(contents, filename):
    output = open(filename,"w")
    output.write(contents)
    output.close()

main(contents, filename)    
webbrowser.open(filename)

if(conn.is_connected()):
    cursor.close()
    conn.close()
    print("MySQL connection is closed.")

我在浏览器输出中得到的是这样的。

我期待的结果:我想用pything/mysql在html文件中显示该表。我使用的是雅虎虚拟主机,我可以在html文件中使用打印(“你好,世界!”)并获得输出。
如果有人能给我指出正确的方向,我将非常感激。谢谢。

643ylb08

643ylb081#

使用 new stylestr.format符号。{}用于占位符,然后调用format来填充它们(如果是可迭代的,不要忘记解包它!)
技巧:创建自己的模板,然后在代码中的任何位置调用它们。

results = [
    ("1", "Smith", "smith@x.com"),
    ("2", "John", "john@y.com"),
    ("3", "Mikey", "mikey@z.com"),
]

html_table_template = """<table>
{}
</table>"""
row_template = "<tr><td>{}</td><td>{}</td><td>{}</td></tr>"

col_names = "ID", "Name", "Email"
html_rows = [row_template.format(*col_names)]
for record in results:
    html_rows.append(row_template.format(*record))

html_table = html_table_template.format('\n  '.join(html_rows))

print(html_table)

产出

<table>
  <tr><td>ID</td><td>Name</td><td>Email</td></tr>
  <tr><td>1</td><td>Smith</td><td>smith@x.com</td></tr>
  <tr><td>2</td><td>John</td><td>john@y.com</td></tr>
  <tr><td>3</td><td>Mikey</td><td>mikey@z.com</td></tr>
</table>

对于您的问题:正如我在注解中提到的,str.join是必需的。p是一个列表,因此,为了具有一致的输出,您必须使用str.join方法将其返回为字符串:term separator - join -> string,其中term seperator是用于分隔列表中每个术语的字符串,可用于换行符等。

相关问题