强制MySQLdb将所有MySQL数据视为字符串

时间:2016-04-03 23:03:34

标签: python mysql-python

我有一个VARCHAR字段偶尔存储数字(随机字符串只有数字,很少)。当我SELECT字段时,MySQLdb将该行上的该字段转换为整数,有时会产生溢出。

我知道MySQLdb.connect()使用一个名为conv的参数来覆盖默认的MySQL字符串结果 - > Python数据类型转换。但是,我不知道如何覆盖它以将所有MySQL数据作为字符串返回。

如何覆盖conv的{​​{1}}参数以将所有数据作为Python字符串从MySQL返回?有没有其他解决方案?

1 个答案:

答案 0 :(得分:2)

根据thisconv是字段类型(MySQLdb.constants.FIELD_TYPE)和Python数据类型之间的字典。对于您的示例,您可以:

from MySQLdb.constants import FIELD_TYPE
conv = { FIELD_TYPE.VARCHAR: str }

或者更普遍(虽然更多的是黑客攻击):

from collections import defaultdict #if on Python 3
conv = defaultdict(lambda: str)

强制将所有数据类型转换为str