转换mysql查询返回类型

问题描述 投票:0回答:1

我正在为Flask的学校项目开发一个webapp。我是python和flask的新手。

在函数“get_absence”中,我正在执行一个mysql查询,我得到了结果。 (查询在mysql命令行中工作并给出输出15)但是我在html页面上的结果是“(十进制('15'),)”。我想提取出数字,这样我才能在网上只显示15个。我怎样才能做到这一点?

查询的结果从get_absence到API函数get_info,然后发送到html页面“page.html”。它在页面上显示为“(十进制('15'),)”。

我无法从元组转换为整数。任何人?

UT IL.朋友:

def get_absence(database):
    try:
        days = []
        cur = database.cursor()
        cur.execute(queries["select SUM(dates) FROM leaves WHERE 
                            emp_id = 14"]) 
        for a in cur:
            num = a; 
        return a
    except:
        return jsonify("Internal server error"), 500
    finally:
        cur.close()

FLASK app.py:

@app.route("/get_info/", methods=["GET"])
def get_info():
    db = get_db()
    cur = db.cursor(buffered=True)
    try: 
        days = get_absence(get_db() )  
        return render_template("page.html", days=days)  
    except mysql.connector.Error as err:
        return render_template("error.html", err = err)
    finally:
        cur.close()

HTML:

<h1>"{{ days }}" </h1>

渲染时,浏览器显示:“(十进制('15'),)”

python mysql flask mysql-connector-python
1个回答
1
投票

execute方法将始终返回迭代器,其中每个元素都是一个元组,表示具有多个列的行。

然后在你的情况下,你只需要从“天”的第一个元素:

days[0]

然后你将有一个decimal对象。您可以在整数中舍入它:

int(days[0])

此外,如果您期望单个元素,那么您可以使用cursor.fetchone()以避免for循环覆盖cur对象。

你可以阅读更多信息here

© www.soinside.com 2019 - 2024. All rights reserved.