SQLAlchemy和Numpy之间的高速接口
项目描述
SQLAlchemy和Numpy之间的高速接口
特性
此项目将从SQLAlchemy读取数据到结构化numpy数组。除了内置的SQLAlchemy类型外,它还支持将几何形状读取到pygeos几何形状数组。
安装
使用pip安装
$ pip install condenser
包含几何支持
$ pip install condenser[geo]
用法
condenser公开了一个对象:NumpyQuery,它作为自定义SQLAlchemy查询类如下使用
>>> from condenser import NumpyQuery >>> # create the session with a custom query class >>> session = session_factory(query_cls=NumpyQuery)
如果以这种方式构建会话,每个查询对象都将有一个额外的方法,将选择的数据导出到numpy结构化数组中
>>> query = session.query(SomeModel.float_type_column, SomeModel.int_type_column) >>> my_array = query.as_structarray()
几何支持
几何列将自动转换为pygeos.Geometry对象数组。有关可以对这些数组执行(向量化的)numpy函数的信息,请参阅https://pygeos.readthedocs.io。
如下转换几何形状(使用数据库函数ST_Transform)
>>> query.with_transformed_geometries(target_srid=28992)
请注意,这只会转换已知SRID的几何形状。如果SRID仅从另一个元数据源中知道,请在将其转换为之前,使用适合您的数据库后端的功能来设置投影。另一种选择是使用与pygeos.apply结合的pyproj库从Python转换几何形状。
自定义dtype映射
condenser在猜测SQLAlchemy dtypes的Numpy dtypes方面有一个安全的方法。它始终使用8字节的带符号整数和浮点数。对于某些数据库后端,这可以更改为例如4字节的类型。在构建查询后覆盖SQLAlchemy到NumPy的类型映射
>>> from sqlalchemy import Integer >>> query = session.query(SomeModel.float_type_column) >>> query.numpy_settings[Integer]["dtype"] = np.int32 >>> query.as_structarray()
或者全局
>>> NumpyQuery.default_numpy_settings[Integer]["dtype"] = np.int32
NULL值
大多数numpy数据类型可以原生处理NULL(Python:None)值。只有整型列需要额外注意,因为它们在NumPy整型中没有等效项。默认情况下,此包将整数列中的NULL转换为-1。以下是一份完整列表,说明可以期待的内容
整数列中的NULL变为-1
浮点数和数值列中的NULL变为nan
布尔列中的NULL变为False
对象类型列(字符串、文本、几何)中的NULL变为None
在执行查询之前调整NULL值
>>> from sqlalchemy import Integer >>> query = session.query(SomeModel.float_type_column) >>> query.numpy_settings[Integer]["null"] = -9999 >>> query.numpy_settings[Boolean]["null"] = True >>> query.as_structarray()
或者全局
>>> NumpyQuery.default_numpy_settings[Integer]["null"] = -9999
致谢
此包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。
项目详情
下载文件
下载适用于您平台的自定义文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
condenser-0.2.1.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e416c1e81c85f8e4481cd7eb9e9a50d3a842672300e07f14a6ac9f2916e1b848 |
|
MD5 | 01bc2aecced1fe7cc7d5a89dee9e5f72 |
|
BLAKE2b-256 | 7fa35885e009d94435747994342c5bb4436c00c9784d056401ef2022e67f0d46 |