flask mysql SUM()游标中字典中的小数.fetchone()



我正在将我的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'(Value?我该如何以简单的方式消除这个十进制功能?我知道有CAST((和float((的建议。我喜欢保持简单,所以我可能缺少一个fetchone((参数吗?或者像MySQL连接器/Python那样的连接参数['raw'](如果必须更改为那样,我必须重写我的代码…(

谢谢。

Decimal是表示固定十进制值的python方法。SQL返回小数可能是因为sumy是小数。很可能所有的实现都会以相同的方式处理这个问题。

让python应用程序作为Decimal处理它可能是维护负责检索的数据库和用于表示的应用程序的最佳方式。

虽然看起来很有趣,但即使是浮点的SUM也以Decimal(123.4(的形式返回。因此,我继续在MySQL中进行所有计算,并使用flask只显示内容。

最新更新