Python3接口到rasdaman
rasdapy3的Python项目详细描述
rasdapy是rasdaman的客户机API,它支持生成和执行rasql python中的查询。
要求
- numpy,grpcio,protobuf
- 正在运行的rasdaman实例,请参见http://rasdaman.org/wiki/Download
安装
- 确保已安装pip3(例如sudo apt install python-pip3)
- 使用pip3 install rasdapy3
- 请注意,如果没有安装setuptools、numpy、grpcio和protobuf, 它们将作为依赖项下载。在
使用
{a2} 与C++的RASQL客户端类似的接口是可用的 如何使用rasdapy向rasdaman发送查询并处理结果。低于 列出了使用rasdapy的最重要细节。在
导入rasdapy核心API
>>> from rasdapy.db_connector import DBConnector >>> from rasdapy.query_executor import QueryExecutor
连接到rasdaman
DBConnector维护与rasdaman的连接。为了连接它 必须指定运行rasmgr的主机和端口,以及 有效的rasdaman用户名和密码。在
^{pr2}$创建查询执行器
QueryExcutor是rasql查询(create,insert, 执行更新、删除等)。在
>>> query_executor = QueryExecutor(db_connector)
打开与拉斯达曼的连接
>>> db_connector.open()
执行示例查询
下面的查询返回rasdaman中所有可用集合的列表。在
>>> colls = query_executor.execute_read("select c from RAS_COLLECTIONNAMES as c") >>> print(colls)
计算集合mr2中所有值的平均值。在
>>> result = query_executor.execute_read("select avg_cells(c) from mr2 as c") >>> type(result)
根据查询的不同,结果将具有不同的类型(例如标量值, 间隔,数组)。每个数据类型都被包装在corresponding class中。在
在集合mr2中选择每个数组的特定子集。此查询将 返回可以转换为Numpy ndarray的原始数组数据。在
>>> result = query_executor.execute_read("select m[0:10 ,0:10] from mr2 as m") >>> numpy_array = result.to_array()
将数组子集编码为PNG格式并将结果写入文件。在
>>> result = query_executor.execute_read("select encode(m[0:10 ,0:10], \"png\") from mr2 as m") >>> with open("/tmp/output.png", "wb") as binary_file: >>> binary_file.write(result.data[0])
创建一个rasdaman系列。请注意,您应该与 具有写入权限;默认情况下,这是rasdaman中的rasadmin/rasadmin,但是 可由管理员管理。在
>>> query_executor.execute_write("create collection test_rasdapy GreySet")
将PNG图像中的数据插入到集合中。同样,你需要 此操作的写入权限。在
>>> query_executor.execute_write("insert into test_rasdapy values decode($1)", "mr_1.png")
或者,您可以从原始二进制文件导入数据;在本例中是这样 必须指定空间域和数组类型。在
>>> query_executor.execute_update_from_file("insert into test_rasdapy values $1", "raw_array.bin", "[0:100]", "GreyString")
有关rasql的更多示例查询和一般指南,请参见 rasdaman documentation。在
关闭与拉斯达曼的连接
>>> db_connector.close()
最佳实践:
建议遵循此模板,以避免出现问题 泄露交易:
from rasdapy.db_connector import DBConnector from rasdapy.query_executor import QueryExecutor db_connector = DBConnector("localhost", 7001, "rasadmin", "rasadmin") query_executor = QueryExecutor(db_connector) db_connector.open() try: query_executor.execute_read("...") query_executor.execute_write("...") # ... more Python code finally: db_connector.close()
贡献者
- 邦芬惠
- 西德哈斯舒克拉
- 米塞夫
- 让·弗朗索瓦·勒孔特
- 德拉吉·卡莫夫
也要感谢
- 亚历克斯·米尔恰·杜米特鲁
- 弗拉德·梅蒂卡里乌
- 乔治·梅蒂卡里乌
- 亚历克斯烤面包机
- 彼得·鲍曼
- 项目
标签: