我正在将数据从一个带有拉丁字符集的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定义一组值,在其中我要为我编写的每个查询进行转换,这看起来非常笨拙,而且实际上是不可维护的。这似乎是类型测试将是干净的,可封装的,可重复使用的答案在这里,不是吗?你知道吗
有什么建议吗?你知道吗
我会使用这样一个小函数:
然后呢
优点是它还可以自动处理
int
以外的类型。你知道吗row = [i.decode('latin_1') if not isinstance(i,int) else i for i in row]
相关问题 更多 >
编程相关推荐