(flask)PythonMySQL-如何通过for循环传递所选数据并返回它?
在我的Flask项目中,我想从数据库中的表中选择所有内容,并在单独的行中打印每一行 在下面的脚本中,我应该如何通过for循环传递数据 我怎样才能退呢 在app.py中:(flask)PythonMySQL-如何通过for循环传递所选数据并返回它?,python,mysql,select,flask,connection,Python,Mysql,Select,Flask,Connection,在我的Flask项目中,我想从数据库中的表中选择所有内容,并在单独的行中打印每一行 在下面的脚本中,我应该如何通过for循环传递数据 我怎样才能退呢 在app.py中: from flask import Flask, render_template import MySQLdb app = Flask(__name__) @app.route('/') def db(): db = MySQLdb.connect("localhost","myusername","mypasswo
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中编辑了两行,如下所示:
data = str(cursor.fetchall())
return render_template('db.html', data = data)
{% for each in data %}
print {{ each }}<br>
{% endfor %}
row=cursor.fetchone()
while row is not None:
print row
# you can access to each column by looping over row
# for column in row:
# print row
row=cursor.fetchone()
并创建了如下db.html:
data = str(cursor.fetchall())
return render_template('db.html', data = data)
{% for each in data %}
print {{ each }}<br>
{% endfor %}
row=cursor.fetchone()
while row is not None:
print row
# you can access to each column by looping over row
# for column in row:
# print row
row=cursor.fetchone()
这里有一个元组列表,列出了如何访问每个索引。请尝试以下方法:
data = str(cursor.fetchall())
return render_template('db.html', data = data)
{% for each in data %}
print {{ each }}<br>
{% endfor %}
row=cursor.fetchone()
while row is not None:
print row
# you can access to each column by looping over row
# for column in row:
# print row
row=cursor.fetchone()
试着这样做:
data = str(cursor.fetchall())
return render_template('db.html', data = data)
{% for each in data %}
print {{ each }}<br>
{% endfor %}
row=cursor.fetchone()
while row is not None:
print row
# you can access to each column by looping over row
# for column in row:
# print row
row=cursor.fetchone()
通常,返回一个元组列表,所以只需将该列表保存到一个变量中并返回它,然后以这种方式循环返回值
@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>
{数据%中的行为%1}
{第%d行中的%d}
{{d}
{%endfor%}
{%endfor%}
这应该将它们打印为一个表。通常,返回一个元组列表,因此只需将该列表保存到一个变量中,然后返回它,然后通过这种方式循环返回值
@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>
{数据%中的行为%1}
{第%d行中的%d}
{{d}
{%endfor%}
{%endfor%}
这应该将它们打印为表。使用类似ORM的SQLAlchemy,使用模型类定义表,然后使用它获取数据
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(128))
body = db.Column(db.Text)
def __init__(self, title, body):
self.title = title
self.body = body
@app.route('/' )
def index():
post = Post.query.all()
返回呈现模板('index.html',post=post)
在中有一个很好的例子,使用类似ORM的SQLAlchemy,使用模型类定义表,然后使用它获取数据
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(128))
body = db.Column(db.Text)
def __init__(self, title, body):
self.title = title
self.body = body
@app.route('/' )
def index():
post = Post.query.all()
返回呈现模板('index.html',post=post)
在Yes right有一个很好的例子,它返回一个元组列表,当然,如果我设置rows=str(cursor.fetchall())
并返回行,那么我将面对一个元组列表。但是您的脚本为我返回此错误:内部服务器错误。服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
我这里有个问题。。。最后三行放在return
part之后,所以它们不能正确地进行任何操作?!所有事情都应该在返回部分之前发生,然后应该通过返回部分传递,或者打印在网页上,对吗?这些行在db()
函数之外,所以它们需要从db()返回的结果
toprint
每一行……你的表很大吗?是的,那是一个巨大的数据表。@niloofar……我编辑了我的答案,以反映你在问题中添加的内容……是的,它返回一个元组列表,当然,如果我设置rows=str(cursor.fetchall())
并返回行,那么我将面对一个元组列表。但是您的脚本为我返回此错误:内部服务器错误。服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
我这里有个问题。。。最后三行放在return
part之后,所以它们不能正确地进行任何操作?!所有事情都应该在返回部分之前发生,然后应该通过返回部分传递,或者打印在网页上,对吗?这些行在db()
函数之外,所以它们需要从db()返回的结果
toprint
每一行…你的表格很大吗?是的,那是一个巨大的数据表格。@niloofar…我编辑了我的答案,以反映你在问题中添加的内容…还有其他解决方案吗?!还有什么解决办法吗?!