⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Types API

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: DuckDBPyType
  • value_type: DuckDBPyType

decimal_type

参数:

  • width: int
  • scale: int

union_type

参数:

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

string_type

参数:

  • collation: Optional[str]