对从数据库中选择的值进行类型测试

2024-07-04 05:20:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将数据从一个带有拉丁字符集的sqlserver数据库提取到一个带有utf-8字符集的Greenplum/postgres数据库中。我正在尝试在插入之前立即转换字符串值,但执行此操作时:

row=[i.decode('latin_1') for i in row]
row=[i.encode('utf-8') for i in row]

我得到一个错误,说明decode不是int类型的成员。这是有意义的,因为有整数值进来。但也有一些条件。在我读过的其他此类帖子中,答案总是立马响亮地说“你应该知道什么类型的人会来”。在很多方面我是这样做的,因为它是一个静态查询,但是为I定义一组值,在其中我要为我编写的每个查询进行转换,这看起来非常笨拙,而且实际上是不可维护的。这似乎是类型测试将是干净的,可封装的,可重复使用的答案在这里,不是吗?你知道吗

有什么建议吗?你知道吗


Tags: 数据字符串答案in数据库类型forpostgres
2条回答

我会使用这样一个小函数:

def convert(s):
    try:
        return s.decode('latin-1').encode('utf8')
    except AttributeError:
        return s

然后呢

row = map(convert, row) # or a compr if you prefer that

优点是它还可以自动处理int以外的类型。你知道吗

row = [i.decode('latin_1') if not isinstance(i,int) else i for i in row]

相关问题 更多 >

    热门问题