试图以 HTML 格式显示所有记录,但它仅在 HTML 中显示数据库中的最后一项

Posted

技术标签:

【中文标题】试图以 HTML 格式显示所有记录,但它仅在 HTML 中显示数据库中的最后一项【英文标题】:Trying to display all records in HTML but it is only presenting last item from the database in the HTML 【发布时间】:2021-11-10 02:13:06 【问题描述】:

这段代码只输出Sqlite表中的最后一条记录。它不会将表中的所有记录输出到 html 中。有什么建议吗?

import sqlite3    
from flask import Flask, render_template, redirect, request   
app = Flask(__name__)

connection = sqlite3.connect('employee.db')

cur = connection.cursor()
cur.execute('SELECT * FROM employee;')
s = "<table style='border:2px solid black'>"
for row in cur:    
    s = s + "<tr>"    
for x in row:    
    s = s + "<td>" + str(x) + "</td>"    
    s = s + "</tr>"    
cur.close()

@app.route('/')  
def main():    

    return "<html><body>" + s + "</body></html>" 

if __name__ == "__main__": 
    app.run()

【问题讨论】:

你可以试试for row in cur.fetchall() 但iirc for row in cur 应该可以工作......但我可能错了 【参考方案1】:

for row in cur 循环中嵌套第二个for x in row 循环,以确保它为每个row 运行

这应该可以解决您的问题。

import sqlite3    
from flask import Flask, render_template, redirect, request   
app = Flask(__name__)

connection = sqlite3.connect('employee.db')

cur = connection.cursor()
cur.execute('SELECT * FROM employee;')
s = "<table style='border:2px solid black'>"
for row in cur:    
    s += "<tr>"    
    for x in row:    
        s += "<td>" + str(x) + "</td>"    
        s += "</tr>"    
cur.close()


@app.route('/')  
def main():    
    return "<html><body>" + s + "</body></html>" 


if __name__ == "__main__": 
    app.run()

【讨论】:

以上是关于试图以 HTML 格式显示所有记录,但它仅在 HTML 中显示数据库中的最后一项的主要内容,如果未能解决你的问题,请参考以下文章