MysqlDB call TypeError:“int”对象不是iterable python

2024-05-19 01:34:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的查询如下:

SELECT post_title, post_name FROM wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3

输出的信息包括:

^{pr2}$

试着用app.py来命名烧瓶:

@app.route('/', methods=('GET', 'POST'))
def email():
        blogposts = c.execute("SELECT post_title, post_name FROM wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3")

        return render_template('index.html', form=form, blogposts=blogposts)

在我的模板中,我调用blogposts类似于:

    {% for blogpost in blogposts %}
    <li><a href="{{blogpost[1]}}">{{blogpost[0]}}</a></li>
    {% else %}
    <li>no content...</li>
    {% endfor %}

但我得到一个错误:

    {% for blogpost in blogposts %}
TypeError: 'int' object is not iterable

我做错什么了?在


Tags: namefrombytitlestatusorderliwhere
1条回答
网友
1楼 · 发布于 2024-05-19 01:34:35

pythonmysql(和其他数据库)连接器中的.execute调用不直接返回数据库结果。(在本例中,它返回匹配的记录数)。在

您必须进一步调用数据库驱动程序以检索实际的select结果。更简单的方法是.fetchall()方法,它将以列表的形式返回所有选定的结果。在

简而言之,将这两行的调用改为execute

...
c.execute("SELECT post_title, post_name FROM wp_posts WHERE post_status='publish' ORDER BY RAND() LIMIT 3")
blogposts = c.fetchall()

相关问题 更多 >

    热门问题