flask mysql SUM() 来自 cursor.fetchone() 的字典中的小数
flask mysql SUM() Decimal in Dictionary from cursor.fetchone()
我正在将我的烧瓶应用程序连接到一个 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"]
return是这个:
({'sumy': Decimal('123.4')})
我现在的问题是:
是否每个连接器,
MySQL Connector/Python
PyMySQL
MySQLDB
mysqlclient
and the OurSQL
return 来自 SUM(列)查询的 Decimal('123.4') 值?
我将如何以简单的方式摆脱这个 Decimal-feature?我知道那里有 CAST() 和 float() 建议。
我喜欢保持简单,所以我可能缺少 fetchone() 参数吗?
或者像 ['raw'] 这样的连接参数,因为 MySQL Connector/Python 有(我必须重写我的代码,如果我不得不改变那个......)
谢谢。
小数是 python 表示固定十进制值的方式。 SQL 返回小数可能是因为 sumy
是小数。很可能所有的实现都会以同样的方式处理这个问题。
让 python 应用程序将其作为 Decimal
处理可能是维护负责检索的数据库和表示的应用程序的最佳方式。
好吧,尽管看起来很有趣,但即使是浮点数的 SUM 也返回为 Decimal(123.4)。我继续在 MySQL 中进行所有计算,并仅使用 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"]
return是这个:
({'sumy': Decimal('123.4')})
我现在的问题是:
是否每个连接器,
MySQL Connector/Python
PyMySQL
MySQLDB
mysqlclient
and the OurSQL
return 来自 SUM(列)查询的 Decimal('123.4') 值? 我将如何以简单的方式摆脱这个 Decimal-feature?我知道那里有 CAST() 和 float() 建议。 我喜欢保持简单,所以我可能缺少 fetchone() 参数吗? 或者像 ['raw'] 这样的连接参数,因为 MySQL Connector/Python 有(我必须重写我的代码,如果我不得不改变那个......)
谢谢。
小数是 python 表示固定十进制值的方式。 SQL 返回小数可能是因为 sumy
是小数。很可能所有的实现都会以同样的方式处理这个问题。
让 python 应用程序将其作为 Decimal
处理可能是维护负责检索的数据库和表示的应用程序的最佳方式。
好吧,尽管看起来很有趣,但即使是浮点数的 SUM 也返回为 Decimal(123.4)。我继续在 MySQL 中进行所有计算,并仅使用 flask 来显示内容。