试图以 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 中显示数据库中的最后一项的主要内容,如果未能解决你的问题,请参考以下文章

试图打开特定记录的报告,但它一直显示所有记录 - 有点?

Telegram bot 应该发送包含“&”字符的 URL,但它仅在该字符之前发送 URL,然后将其缩短

标记重复记录的T-SQL查询

如何仅在 Angular 的某些页面上显示标题组件(现在它仅在重新加载时显示)

Ng-如果仅在刷新页面时起作用

GridView 自动调整图像