2009-10-17 2 views
5

python에서 sqlite3 모듈을 사용하면 열 이름을 제외한 cursor.description의 모든 요소가 없음으로 설정되므로이 튜플을 사용하여 다른 DB와 달리 쿼리 결과의 열 유형을 찾을 수 없습니다 -API 준수 모듈). pragma table_info(table_name).fetchall()을 사용하여 열의 유형을 가져와 테이블에 대한 설명을 가져 와서 메모리에 저장하고 cursor.description의 열 이름을 해당 전체 테이블 설명과 일치시키는 유일한 방법입니까?sqlite3 및 cursor.description

답변

5

아니요, 유일한 방법은 아닙니다. 또는 하나의 행을 가져 와서 반복 실행하고 개별 열 Python 객체 및 유형을 검사 할 수도 있습니다. 값이 None (SQL 필드가 NULL 인 경우)이 아닌 한, 이는 데이터베이스 열 유형이 무엇인지에 대한 정확한 표시를 제공합니다.

sqlite3은 sqlite3_column_decltypesqlite3_column_type을 각각 한 곳에서 사용하며 어느 쪽도 파이썬 응용 프로그램에서 액세스 할 수 없으므로 사용자가 찾고있는 "직접적인"방법이 아닙니다.

1

내가 파이썬이 시도하지 않은,하지만 당신은 DDL 테이블을 만드는 데 사용하는 CREATE 포함

SELECT * 
FROM sqlite_master 
WHERE type = 'table'; 

처럼 뭔가를 시도 할 수 있습니다. DDL을 구문 분석하면 열 유형 정보를 얻을 수 있습니다. SQLITE는 열 데이터 유형의 경우 다소 모호하고 제한되지 않습니다.