2013-06-19 7 views
0

(어린이) 같은 문자를 가진 sqlite 데이터베이스에 csv 파일을 통해 읽는 문서 문자열을 삽입하려고하는데, 다음 오류 :pysqlite DatabaseError : text_factory를 사용하지 않는 한 8 비트 바이트 체크를 사용하면 안됩니다.

DatabaseError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings.

문서를 삽입하기 전에 문자열을 unistring로 변환하고 있는지 확인하십시오.

unicode('Children's', 'unicode-escape')

데이터 저장을 위해 Django ORM을 사용하고 있습니다. 이걸 없애기 위해 내가 할 수있는 일이 있습니까?

답변

1

오류를 일으키는 .execute() 매개 변수는 말한 것처럼 유니 코드 문자열 대신 파이썬 bytestring입니다. 해결책 : 대신 유니 코드 문자열을 작성하십시오 : unicode (your_data, your_encoding). 대부분의 CSV 파일의 인코딩은 "latin-1"또는 "uft-8"입니다.

"유니 코드 탈출"을 사용하는 것은 거의 틀린 것입니다. 그것의 파이썬 특정 인코딩은 "파이썬 소스 코드에서 유니 코드 리터럴로 적합한 문자열을 생성"(doc)에 따른 것입니다.