타입 API

타입 API (Types API)

DuckDBPyType 클래스는 우리의 데이터 타입의 타입 인스턴스를 나타내요. API를 최대한 쓰기 쉽게 만들기 위해, 기존 타입 객체에서 DuckDBPyType 인스턴스로의 암시적 변환을 지원해요. 즉 DuckDBPyType 객체가 필요한 곳마다 아래 나열된 옵션 중 무엇이든 제공할 수 있어요.

출처: 문서

본문

다른 타입에서 변환하기 (Converting from Other Types)

Python 내장 타입 (Python Built-Ins)

아래 표는 Python 내장 타입을 DuckDB 타입으로 매핑한 것이에요.

내장 타입 (Built-in types) DuckDB 타입
bool BOOLEAN
bytearray BLOB
bytes BLOB
float DOUBLE
int BIGINT
str VARCHAR

Numpy DType

아래 표는 Numpy DType을 DuckDB 타입으로 매핑한 것이에요.

Type DuckDB 타입
bool BOOLEAN
float32 FLOAT
float64 DOUBLE
int16 SMALLINT
int32 INTEGER
int64 BIGINT
int8 TINYINT
uint16 USMALLINT
uint32 UINTEGER
uint64 UBIGINT
uint8 UTINYINT

중첩 타입 (Nested Types)

list[child_type]

list 타입 객체는 자식 타입의 LIST 타입으로 매핑돼요. 원하는 만큼 중첩할 수도 있어요.

import duckdb.sqltypes
from typing import Union

duckdb.sqltypes.DuckDBPyType(list[dict[Union[str, int], str]])
MAP(UNION(u1 VARCHAR, u2 BIGINT), VARCHAR)[]
dict[key_type, value_type]

dict 타입 객체는 키 타입과 값 타입의 MAP 타입으로 매핑돼요.

import duckdb.sqltypes

print(duckdb.sqltypes.DuckDBPyType(dict[str, int]))
MAP(VARCHAR, BIGINT)
{'a': field_one, 'b': field_two, ..., 'n': field_n}

dict 객체는 dict의 키와 값으로 구성된 STRUCT로 매핑돼요.

import duckdb.sqltypes

print(duckdb.sqltypes.DuckDBPyType({'a': str, 'b': int}))
STRUCT(a VARCHAR, b BIGINT)
Union[type_1, ... type_n]

typing.Union 객체는 제공된 타입들의 UNION 타입으로 매핑돼요.

import duckdb.sqltypes
from typing import Union

print(duckdb.sqltypes.DuckDBPyType(Union[int, str, bool, bytearray]))
UNION(u1 BIGINT, u2 VARCHAR, u3 BOOLEAN, u4 BLOB)

생성 함수 (Creation Functions)

내장 타입의 경우 duckdb.sqltypes에 정의된 상수를 사용할 수 있어요:

DuckDB 타입
BIGINT
BIT
BLOB
BOOLEAN
DATE
DOUBLE
FLOAT
HUGEINT
INTEGER
INTERVAL
SMALLINT
SQLNULL
TIME_TZ
TIME
TIMESTAMP_MS
TIMESTAMP_NS
TIMESTAMP_S
TIMESTAMP_TZ
TIMESTAMP
TINYINT
UBIGINT
UHUGEINT
UINTEGER
USMALLINT
UTINYINT
UUID
VARCHAR

복합 타입의 경우 DuckDBPyConnection 객체 또는 duckdb 모듈에 메서드가 있어요. DuckDBPyType이 허용되는 어디든, 암시적으로 DuckDBPyType으로 변환될 수 있는 타입 객체 중 하나도 허용해요.

list_type | array_type

매개변수:

  • child_type: DuckDBPyType

struct_type | row_type

매개변수:

  • fields: Union[list[DuckDBPyType], dict[str, DuckDBPyType]]

map_type

매개변수:

  • key_type: DuckDBPyType
  • value_type: DuckDBPyType

decimal_type

매개변수:

  • width: int
  • scale: int

union_type

매개변수:

  • members: Union[list[DuckDBPyType], dict[str, DuckDBPyType]]

string_type

매개변수:

  • collation: Optional[str]

더 알아보기 (Learn more)