强制 MySQLdb 将所有 MySQL 数据视为字符串
force MySQLdb to treat all MySQL data as strings
我有一个 VARCHAR
字段,它偶尔存储数字(随机字符串只有数字,很少见)。当我 SELECT
字段时,MySQLdb
将该行上的字段转换为整数,有时会造成溢出。
我知道 MySQLdb.connect()
接受一个名为 conv
的参数,它会覆盖默认的 MySQL 字符串结果 --> Python 数据类型转换。但是,我不知道如何将其覆盖为 return 所有 MySQL 数据作为字符串。
如何将 MySQLdb.connect()
的 conv
参数覆盖为 return 来自 MySQL 的所有数据作为 Python 字符串?有没有其他解决方案?
根据this,conv
是字段类型 (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
。
我有一个 VARCHAR
字段,它偶尔存储数字(随机字符串只有数字,很少见)。当我 SELECT
字段时,MySQLdb
将该行上的字段转换为整数,有时会造成溢出。
我知道 MySQLdb.connect()
接受一个名为 conv
的参数,它会覆盖默认的 MySQL 字符串结果 --> Python 数据类型转换。但是,我不知道如何将其覆盖为 return 所有 MySQL 数据作为字符串。
如何将 MySQLdb.connect()
的 conv
参数覆盖为 return 来自 MySQL 的所有数据作为 Python 字符串?有没有其他解决方案?
根据this,conv
是字段类型 (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
。