python - 从 MySQLdb 获取文本结果

标签 python mysql type-conversion mysql-python

目前查询得到的对象中的各个元素存储如下:

((1L,小数('30'),小数('17')),(2L,小数('29'),小数('16')))

我想要它的格式:

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

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

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

是否有更快、更简单的方法来实现这一目标?

最佳答案

您需要覆盖 conversions通过将 conv 参数传递给 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 值都将以字符串形式返回。

另请参阅相关主题:

关于python - 从 MySQLdb 获取文本结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24910376/

相关文章:

c++ - 简单的继承问题

python - 多对一映射(创建等价类)

python - 在亚马逊 ec2 linux 微型实例上的 virtualenv 中安装 scipy 时遇到问题

javascript - 如何在ORDER BY和limit之后动态添加查询参数

php - 将所有发布数据插入 MySQL 数据库

Python,确定是否应将字符串转换为 Int 或 Float

c++ - 为什么指向从基到派生的成员转换的指​​针会出错

python - 来自 turtle 类的 mainloop 函数不起作用,Python

python - 没有轴的绘图表面

python - 将列表转换为字符串以插入到 python scrapy 中的一行中的 sql 中