Python 将unicode编码为utf-8的两个循环
我是flask的新手,我想在web上显示mysql数据。但它是unicode,所以我尝试使用两个for来解决它。但现在我想知道为什么我可以使用两个for循环将unicode编码为utf-8Python 将unicode编码为utf-8的两个循环,python,flask,Python,Flask,我是flask的新手,我想在web上显示mysql数据。但它是unicode,所以我尝试使用两个for来解决它。但现在我想知道为什么我可以使用两个for循环将unicode编码为utf-8 烧瓶代码 #coding=utf-8 from flask import Flask, request, render_template from flaskext.mysql import MySQL mysql = MySQL() app = Flask(__name__) app.config['M
烧瓶代码
#coding=utf-8
from flask import Flask, request, render_template
from flaskext.mysql import MySQL
mysql = MySQL()
app = Flask(__name__)
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = ''
app.config['MYSQL_DATABASE_DB'] = 'test'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
@app.route('/')
def showbookname():
cursor = mysql.get_db().cursor()
cursor.execute("SELECT * FROM manager ")
bookname = cursor.fetchall()
return render_template('book.html', bookname = bookname)
if __name__ == '__main__':
app.run( debug = True)
错误的HTML
标题
{{bookname}}
不幸的是,您的期望不正确。原始输出是正确的-您正在打印行列表本身,这不是unicode问题。这意味着行必须以某种可能显示的方式序列化。在本例中,这是((列,列,…),(列,列,…)
。它来自python的repr(bookname)
,您不应该依赖它以任何特定的方式查看。恰好通过在u
前面加上前缀来显示哪些字符串是unicode
如果想要获得预期的输出,必须自己构建:
(
{% for items in bookname %}
(
{% for item in items %}
{{ item }}
{% if not loop.last %}
,
{% endif %}
{% endfor %}
)
{% if not loop.last %}
,
{% endif %}
{% endfor %}
)
如果不希望在输出中使用空白,则必须从模板中删除空白。但我认为,实际上您需要不同的输出格式—只需调整模板即可。这与unicode无关,但当您使用
cursor.fetchall()
方法时,它会返回元组列表。类似这样的内容:[(…,…),(…,…)]
。这就是为什么您需要首先遍历列表
,然后遍历元组
,以获得所需的值。非常感谢您,viraptor。