flask mysql SUM() 来自cursor.fetchone()的字典中的小数

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

我将我的 Flask 应用程序连接到 MySQL 数据库,如下所示:


from flask_mysql_connector import MySQL
from flask_mysqldb import MySQL


# MySQL Connection
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'Prices'
app.config['MYSQL_PORT'] = 3306
app.config['MYSQL_DATABASE_SOCKET'] = ''
app.config['MYSQL_UNIX_SOCKET'] = ''
app.config['MYSQL_CONNECT_TIMEOUT'] = ''
app.config['MYSQL_READ_DEFAULT_FILE'] = ''
app.config['MYSQL_USE_UNICODE'] = ''
app.config['MYSQL_CHARSET'] = ''
app.config['MYSQL_SQL_MODE'] = ''
app.config['MYSQL_CURSORCLASS'] = 'DictCursor'


mysql = MySQL()
mysql.init_app(app)

执行如下查询:

cursor.execute("SELECT SUM(total) AS sumy FROM tbl")
total = cursor.fetchone()
total = total["sumy"]

返回这个:

({'sumy': Decimal('123.4')})

我现在的问题是:

每个连接器,

MySQL Connector/Python
PyMySQL
MySQLDB
mysqlclient
and the OurSQL

从 SUM(列)查询返回 Decimal('123.4') 值? 我如何以简单的方式摆脱这个十进制功能?我知道有 CAST() 和 float() 建议。 我喜欢保持简单,所以是否可能缺少 fetchone() 参数? 或者像 MySQL 连接器/Python 那样的 ['raw'] 这样的连接参数(如果我必须更改为那个,我必须重写我的代码......)

谢谢你。

python mysql flask sum decimal
3个回答
0
投票

Decimal 是 Python 表示固定十进制值的方式。 SQL 返回小数可能是因为

sumy
是小数。很可能所有实现都会以相同的方式处理这个问题。

让 python 应用程序将其作为

Decimal
进行处理可能是维护负责检索的数据库和负责呈现的应用程序的最佳方法。


0
投票

好吧,虽然看起来很有趣,但即使浮点数的总和也以 Decimal(123.4) 的形式返回。我继续在 MySQL 中进行所有计算,并仅使用 Flask 来显示内容。


0
投票

使用for循环

导入pymysql pymysql.install_as_MySQLdb() 导入MySQLdb

db= MySQLdb.connect("主机名","用户名","密码","数据库名")

光标= db.cursor()

cursor.execute("从客户订单中选择 SUM(价格) 作为总和")

结果=cursor.fetchall()

对于结果中的 i: 打印(我[0])

db.close()

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