2013-02-08 4 views
1

저는 stackoverflow와 python \ django에 익숙합니다. 이미 문제를 해결했지만 다음에 더 빨리 해결할 수있는 방법에 대한 도움을 얻을 수 있기를 희망합니다.어떤 django 모델 필드에 잘못된 값이 포함되어 있는지 확인

필자는 하나의 데이터베이스에서 다른 데이터베이스로 테이블 레코드를 복사하는 매우 간단한 파이썬 함수를 사용합니다 (sqllite에 대한 SQL 서버). 표에는 수백 개의 열이 있습니다. 내가 열 중 하나의 데이터가 UTF8 변환에 문제가 있음을 이해

'의 UTF8'코덱 바이트 디코딩 할 수 있습니다 ...

: 내가 sqllite하는 모델 객체를 저장할 때, 장고는 다음과 같은 예외가 발생합니다 . 내가 알고 싶었던 것은이 칼럼이 무엇인지입니다. 나는 다른 방법을 시도했지만 결국 나는 나쁜 열을 찾으려면 다음 코드를 작성했다 :

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 프레임 워크 자체에 던져진 예외들 모두를 깨뜨렸다.

알론.

답변

0

여기서하고있는 것처럼 각 필드를 테스트하지 않고 특정 필드가 문제를 일으키는 지 확인하는 방법이 없다고 생각합니다. 오류를 리턴하는 대신 문제점 필드를 수리하려고 시도 할 수 있습니다.

this section of the unicode docs을 살펴보십시오. 기본적으로 비 유니 코드 부분을 바꾸거나 비 유니 코드 부분을 모두 제거하여 값을 강제 변환 할 수 있습니다.

문자열이 들어있는 인코딩을 알고 있다면 string.encodestring.decode을 사용하여 문자열을 디코딩하고 다시 인코딩 할 수 있습니다.

관련 문제