DuckDBPyType 类表示我们数据类型的类型实例。
从其他类型转换
为了使API尽可能易于使用,我们添加了从现有类型对象到DuckDBPyType实例的隐式转换。 这意味着在需要DuckDBPyType对象的地方,也可以提供下面列出的任何选项。
Python 内置函数
下表显示了Python内置类型与DuckDB类型的映射关系。
| 内置类型 | DuckDB 类型 |
|---|---|
| 布尔 | 布尔型 |
| bytearray | BLOB |
| 字节 | BLOB |
| 浮点数 | 双精度浮点数 |
| 整数 | 大整数 |
| 字符串 | VARCHAR |
Numpy DTypes
下表显示了Numpy DType到DuckDB类型的映射。
| 类型 | DuckDB 类型 |
|---|---|
| 布尔 | 布尔型 |
| float32 | 浮点数 |
| float64 | DOUBLE |
| int16 | SMALLINT |
| int32 | 整数 |
| int64 | BIGINT |
| int8 | TINYINT |
| uint16 | USMALLINT |
| uint32 | UINTEGER |
| uint64 | UBIGINT |
| uint8 | UTINYINT |
嵌套类型
list[child_type]
list 类型的对象映射到子类型的 LIST 类型。它也可以任意嵌套。
import duckdb
from typing import Union
duckdb.typing.DuckDBPyType(list[dict[Union[str, int], str]])
MAP(UNION(u1 VARCHAR, u2 BIGINT), VARCHAR)[]
dict[key_type, value_type]
dict 类型的对象映射到键类型和值类型的 MAP 类型。
import duckdb
print(duckdb.typing.DuckDBPyType(dict[str, int]))
MAP(VARCHAR, BIGINT)
{'a': field_one, 'b': field_two, .., 'n': field_n}
dict 对象映射到由字典的键和值组成的 STRUCT。
import duckdb
print(duckdb.typing.DuckDBPyType({'a': str, 'b': int}))
STRUCT(a VARCHAR, b BIGINT)
Union[⟨type_1⟩, ... ⟨type_n⟩]
typing.Union 对象映射到提供的类型的 UNION 类型。
import duckdb
from typing import Union
print(duckdb.typing.DuckDBPyType(Union[int, str, bool, bytearray]))
UNION(u1 BIGINT, u2 VARCHAR, u3 BOOLEAN, u4 BLOB)
创建函数
对于内置类型,你可以使用在duckdb.typing中定义的常量:
| DuckDB 类型 |
|---|
| BIGINT |
| 位 |
| BLOB |
| 布尔值 |
| 日期 |
| 双精度浮点数 |
| 浮点数 |
| HUGEINT |
| 整数 |
| 间隔 |
| SMALLINT |
| SQLNULL |
| TIME_TZ |
| 时间 |
| TIMESTAMP_MS |
| 时间戳_纳秒 |
| TIMESTAMP_S |
| TIMESTAMP_TZ |
| 时间戳 |
| TINYINT |
| UBIGINT |
| UHUGEINT |
| 无符号整数 |
| 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]