MySQL SUM(BIGINT)查询返回bytearray而不是BIGINT,但仅在作为预准备语句调用时返回

时间:2018-04-06 20:01:47

标签: mysql python-3.x prepared-statement mysql-connector-python

我有以下MySQL查询:

    SELECT COUNT(billable_size),
           SUM(billable_size),
           MIN(billable_size),
           MAX(billable_size)
      FROM inv_files
     WHERE billable_size >= %s
       AND billable_size < %s

billable_size列是BIGINT,其值的SUM()最高可达1e + 14。

当我使用简单的字符串插值运行此查询时 -

cursor = cnx.cursor()
cursor.execute(query_sql % (from_size, to_size))

- MySQL Connector / Python正确地将sum值作为Python Decimal返回。

但是当我尝试将其作为预备声明运行时 -

cursor = cnx.cursor(prepared=True)
cursor.execute(query_sql, (from_size, to_size))

- 总和反而作为bytearray返回,导致任何数量的麻烦。 (显然MySQL returning byte arrays when it should return something else存在一些已知问题?也许我认为自己很幸运,它适用于普通的字符串插值。)

是否有SQL&#34;类型提示&#34;或者其他一些方法我可以让MySQL Connector / Python正确返回正确的类型?

0 个答案:

没有答案