gpt4 book ai didi

python - (flask) python mysql - 如何通过 for 循环传递选定的数据并返回它?

转载 作者:行者123 更新时间:2023-11-29 07:14:15 25 4
gpt4 key购买 nike

在我的 Flask 项目中,我想从数据库表中选择所有内容并在单独的行中打印每一行?

我应该如何通过下面这个脚本中的 for 循环传递数据?

我该如何返回?

在app.py中:

from flask import Flask, render_template
import MySQLdb

app = Flask(__name__)

@app.route('/')
def db():
db = MySQLdb.connect("localhost","myusername","mypassword","mydbname" )

cursor = db.cursor()

cursor.execute("SELECT * from p_user")

cursor.fetchall()

db.close()

return


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

==================================================

即使这样的尝试也没有成功。

我在 app.py 中编辑了 2 行,如下所示:

data = str(cursor.fetchall())

return render_template('db.html', data = data)

并像这样创建了 db.html:

{% for each in data %}

print {{ each }}<br>

{% endfor %}

输出是:

print (
print (
print 1
print ,
print
print '
print s
print h
....

有一个元组列表,我如何到达每个索引。

最佳答案

通常,cursor.fetchall()返回一个元组列表,因此只需将该列表保存到一个变量中并返回它,然后循环返回的值,这样

@app.route('/')
def db():
db = MySQLdb.connect("localhost","myusername","mypassword","mydbname" )

cursor = db.cursor()

cursor.execute("SELECT * from p_user")

rows = cursor.fetchall()

db.close()

return rows

rows = db()

for row in rows:
print(row)

或者甚至简单而高效(如果您有一个巨大的表,则通过节省内存)根本不需要调用 cursor.fetchall:

@app.route('/')
def db():
db = MySQLdb.connect("localhost","myusername","mypassword","mydbname" )

cursor = db.cursor()

cursor.execute("SELECT * from p_user")

rows = []

for row in cursor:
rows.append(row)
print(row)

return rows

编辑:

不需要str结果,只需将它们按原样(元组列表)传递到您的模板,这样:

data = cursor.fetchall()    
return render_template('db.html', data = data)

您的模板应如下所示:

<table border="1" cellpadding="5" cellspacing="5">
{% for row in data %}
<tr>
{% for d in row %}
<td>{{ d }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>

这应该将它们打印为表格。

关于python - (flask) python mysql - 如何通过 for 循环传递选定的数据并返回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38540256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com