找出哪个django模型字段包含错误值

时间:2013-02-08 12:45:35

标签: python django debugging

我是stackoverflow和python \ django的新手。我已经解决了我的问题,但我希望下次能更快地解决问题。

我有一个非常简单的python函数,它将表记录从一个db复制到另一个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框架本身抛出的所有异常。

阿龙。

1 个答案:

答案 0 :(得分:0)

我不认为有任何方法可以确定哪个特定字段导致问题,而无需像在此处一样测试每个字段。您可以尝试修复问题字段,而不是返回错误。

看看this section of the unicode docs。基本上你可以通过替换非unicode部分或完全删除非unicode部分来强制值。

或者,如果您知道字符串所在的编码,则可以解析字符串并分别使用string.encodestring.decode进行适当的重新编码。