Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(flask)PythonMySQL-如何通过for循环传递所选数据并返回它?_Python_Mysql_Select_Flask_Connection - Fatal编程技术网

(flask)PythonMySQL-如何通过for循环传递所选数据并返回它?

(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

在我的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中编辑了两行,如下所示:

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()返回的结果
to
print
每一行……你的表很大吗?是的,那是一个巨大的数据表。@niloofar……我编辑了我的答案,以反映你在问题中添加的内容……是的,它返回一个元组列表,当然,如果我设置
rows=str(cursor.fetchall())
并返回行,那么我将面对一个元组列表。但是您的脚本为我返回此错误:
内部服务器错误。服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
我这里有个问题。。。最后三行放在
return
part之后,所以它们不能正确地进行任何操作?!所有事情都应该在返回部分之前发生,然后应该通过返回部分传递,或者打印在网页上,对吗?这些行在
db()
函数之外,所以它们需要从
db()返回的结果
to
print
每一行…你的表格很大吗?是的,那是一个巨大的数据表格。@niloofar…我编辑了我的答案,以反映你在问题中添加的内容…还有其他解决方案吗?!还有什么解决办法吗?!