从MySQLdb获取结果作为文本

时间:2014-07-23 12:21:38

标签: python mysql type-conversion mysql-python

目前,查询后获得的对象中的每个元素都存储如下:

((1L, Decimal('30'), Decimal('17')), (2L, Decimal('29'), Decimal('16')))

我希望格式为:

(("1","30","17"),("2","29","16"))

这是因为我必须稍后使用zip()创建一个dict,然后将其作为json传递。

现在我当然可以遍历整个结果,进入每个元素并str(),然后使用巨大的结果集,这将是一个非常大的开销。

有更快,更简单的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

您需要通过将conv参数传递给conversions来覆盖MySQLdb.connect()映射:

import MySQLdb
from MySQLdb.constants import FIELD_TYPE

conv = MySQLdb.converters.conversions.copy()
conv[FIELD_TYPE.DECIMAL] = conv[FIELD_TYPE.NEWDECIMAL] = str

db = MySQLdb.connect(host='...', user='...', passwd='...', db='...', conv=conv)

现在,所有Decimal值都将作为字符串返回。

另见相关主题: