Python/Flask 初学者:如何格式化 db 值?
Posted
技术标签:
【中文标题】Python/Flask 初学者:如何格式化 db 值?【英文标题】:Python/Flask beginner: how to format db values? 【发布时间】:2021-11-02 09:29:12 【问题描述】:我正在构建一个带有排名的网络应用程序,用于网球俱乐部学习 python。确实从一个应该使用 python 和烧瓶制作博客的教程开始。如果需要,您可以在这里找到它:
https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3
到目前为止,我创建了一个名为 main.db 的 sqlite 数据库,使用单独的脚本和 pandas 作为名为 playerlist 的表导入了一个 Excel 表,其中包含 3 列:名称、点数、活动。
我有一个 app.py,它查询数据库中的所有条目并返回一个 index.html,其中包含列表中的所有条目。这些点显示为浮点值,最后是 xxx.0。我希望看到整数,但无法弄清楚在迭代行时如何“格式化”一列的每个条目。
from flask import Flask, render_template, request, url_for, flash, redirect
from werkzeug.exceptions import abort
app = Flask(__name__)
app.config['SECRET_KEY'] = '********************'
def get_db_connection():
conn = sqlite3.connect('/path/to/main.db')
conn.row_factory = sqlite3.Row
return conn
...
@app.route('/')
def index():
conn = get_db_connection()
rows = conn.execute('SELECT * FROM playerslist').fetchall()
conn.close()
return render_template('index.html', rows=rows)
index.html 看起来像这样:
% block content %
<h1>% block title % Tennis Rankings % endblock %</h1>
% for row in rows %
<a href=" url_for('data', Name=row['Name']) ">
<h2> row['Name'] </h2>
</a>
<span class="badge badge-primary"> row['Points'] </span>
<a href=" url_for('edit', Name=row['Name']) ">
<span class="badge badge-warning">Edit</span>
</a>
<hr>
% endfor %
% endblock %
我想我要么必须在查询数据库时这样做,要么必须在查询之前转换数据库条目?!感谢您的帮助:)
【问题讨论】:
【参考方案1】:好的,所以我发现使用 CAST 可以做到这一点。我变了
rows = conn.execute('SELECT * FROM playerslist').fetchall()
到
rows = conn.execute('SELECT Name, CAST (Points AS Int) as Points, Active FROM playerslist').fetchall()
我之前尝试过,但我没有在 CAST 之后定义“作为点”,并且在索引页面上得到空白输出,因为我在其中一种 SQL“尝试 - 你自己”形式中发现,如果你不重新定义缺少 Cast 的第一个(索引)行。
【讨论】:
【参考方案2】:不能依赖 SQL 查询以我们首选的格式返回数字,更改数据库不会真正帮助您。
唯一的简单方法是明确地进行类型转换,
for row in rows:
row = int(row)
【讨论】:
这是我的第一个想法,但一行中有多种类型的数据,因此将所有内容(甚至文本)都转换为整数不是办法以上是关于Python/Flask 初学者:如何格式化 db 值?的主要内容,如果未能解决你的问题,请参考以下文章
将 Python Flask Web 服务器应用程序连接到 DB2