2016-09-09 5 views
0

bytea 유형의 열이있는 PostgreSQL 테이블이 있습니다. 이 테이블을 SQLite에서 이식하면 문제가 발생합니다. 원시 이진 데이터를 SQL 쿼리로 전달하는 방법을 알 수 없습니다. 내가 사용하는 프레임 워크는 PyGreSQL이다. 나는 많은 변환을 피하기 위해 DB-API 2.0 인터페이스를 고수하고 싶다.
이 인터페이스는 기존 인터페이스 (달러 기호 매개 변수) 및 SQLite (물음표 매개 변수)와 달리 유형 (예 : 이전 Python과 같은 형식)을 지정해야합니다.
open() 메서드에서 'rb' 플래그를 사용하여 이진 읽기 PNG 파일을 전달해야합니다.
쿼리 코드는 다음과 같습니다Bytestring을 PyGreSQL에 전달하는 방법은 무엇입니까?

db = pgdb.connect(args) 
c = db.cursor() 
c.execute('INSERT INTO tbl VALUES (%b)', (b'test_bytes',)) 

이 오류 unsupported format character 'b' (0x62) at index 54를 제공하고 형식 일 수 없습니다. 이 문제를 해결하기 위해 무엇을 할 수 있습니까?

답변

0

해결책은 아니지만 충분히 좋은 해결 방법입니다.대신 PyGreSQL을 사용하기로 결정했기 때문에 일반적인 문제에 대한 정보를 찾는 것이 더 쉽습니다. 이
이 솔루션은 내가 훨씬 더 파이썬 (동적으로 입력 된 언어 유형에 대해 생각 할 필요)

그래서, 내 쿼리는 다음과 같이 것을 찾을 수없는, 모든 유형 %s을 사용하는 것입니다 :

c.execute('INSERT INTO tbl VALUES (%s)', (b'test_bytes',)) 
관련 문제