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]