[해결] python에서 sqlite DB에 저장되어 있는 BLOB 타입 데이터를 읽어올때.

k3rnel의 이미지

안녕하세요.

환경 python 2.7.5

python에서 sqlite DB에 저장되어 있는 BLOB 타입 데이터를 읽어올때.

DB에서 읽어온 해당 데이터를 type() 함수로 타입을 출력해보니 buffer 타입이라고 나오는데요.
buffer 타입을 unicode 타입으로 변환할 수 있을까요?

조언 부탁드릴게요. 감사합니다 (_ _)

chanik의 이미지

그냥 unicode() 로 buffer 데이터를 둘러싸면 되는 것 같네요.

> buf = buffer('asdfasdf')
> unicode(buf)
u'asdfasdf'

그런데 아래 페이지를 보면,
sqlite blob 컬럼에 꼭 buffer() 타입만 들어가는 것은 아니군요.

http://bugs.python.org/issue7723

python 2에서는 unicode, bytes, buffer 타입을 BLOB 컬럼에 넣고 뺄 수 있고
python 3에서는 unicode, bytes, bytearray, memoryview 타입이 가능한 모양입니다.
위 페이지에 이를 보여주는 간단한 파이썬 예제도 있으니 참고가 될 것입니다.

넣을 때 buffer()를 넣었기 때문에 select 할 때 buffer()가 나온 것일 뿐,
애초에 unicode 데이터를 넣으면 select 할 때도 unicode가 나옵니다.
위 페이지의 샘플에서는 그렇게 동작하는군요.

k3rnel의 이미지

chaink님 ㅎㅎ

여기도 덧글 달아주셨네요.ㅎㅎ
자세한 설명 감사합니다~(_ _)