타입 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: DuckDBPyTypevalue_type: DuckDBPyType
decimal_type
매개변수:
width: intscale: int
union_type
매개변수:
members: Union[list[DuckDBPyType], dict[str, DuckDBPyType]]
string_type
매개변수:
collation: Optional[str]