【问题标题】:Getting Results from MySQLdb as text从 MySQLdb 获取结果为文本
【发布时间】:2014-07-23 12:21:37
【问题描述】:

目前查询后得到的对象中每个元素的存储方式如下:

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

我想要它的格式:

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

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

当然,现在我可以遍历整个结果,进入每个元素并str() 它,但是对于庞大的结果集,这将是一个非常大的开销。

有没有更快、更简单的方法来实现这一点?

【问题讨论】:

    标签: python mysql type-conversion mysql-python


    【解决方案1】:

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

    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 值都将作为字符串返回。

    另见相关主题:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多