1

我是 stackoverflow 和 python\django 的新手。我已经解决了我的问题,但我希望下次我能得到有关如何更快地解决它的帮助。

我有一个非常简单的 python 函数,它将表记录从一个 db 复制到另一个(sql server 到 sqllite)。该表有数百列。当我将模型对象保存到 sqllite 时,django 抛出以下异常:

“utf8”编解码器无法解码字节...

我了解其中一列中的数据对于 utf8 转换存在问题。我想知道的是这是什么列。我尝试了不同的方法,但最终我不得不编写以下代码来找到错误的列:

build = Builds.objects.using('realdb').get(buildid=12524)
n = Builds()
for field in Builds._meta.fields:
    val = getattr(build, field.name);
    try:
        setattr(n, field.name, val)
        n.save(using="default")
    except:
        return HttpResponse(field.name + ": " + val.__str__())

它基本上将列值一一复制到新模型对象,并在遇到错误时停止。下次有没有更好的方法来做到这一点?我尝试在 PyCharm 中打破异常,但它打破了 django 框架本身引发的所有许多异常。

阿隆。

4

1 回答 1

0

我认为没有任何方法可以确定导致问题的特定字段,而无需像您在这里所做的那样对每个字段进行测试。您可以尝试修复问题字段而不是返回错误。

查看unicode 文档的这一部分。基本上,您可以通过替换非 unicode 部分或完全删除非 unicode 部分来强制这些值。

或者,如果您知道字符串的编码方式,则可以分别使用string.encode和对字符串进行解码并重新编码string.decode

于 2013-02-08T13:37:52.553 回答