蟒蛇接口
rasdap的Python项目详细描述
*rasdapy是rasdaman的客户端api,它支持 使用python执行rasql查询。*
要求
- 努比,格普西奥,普罗托布。
- 正在运行的rasdaman实例,请参见http://rasdaman.org/wiki/Download
安装
如果使用Python2和Python,请确保使用Python2.7或更高版本 如果使用Python3,则为3.4或更高版本。如果有疑问,请运行:
$python–版本
如果没有安装setuptools、numpy、grpcio和protobuf, 请注意,它们将作为rasdapy的依赖项下载: pip安装rasdapy。
用法
提供了一个完整的客户端,演示如何使用rasdapy发送 向Rasdaman查询并处理结果: http://rasdaman.org/browser/applications/rasdapy/rasql.py
导入Rasdapy Core API
$ from rasdapy.db_connector import DBConnector $ from rasdapy.query_executor import QueryExecutor
连接到Rasdaman
dbconnector维护与rasdaman的连接。为了 连接必须指定rasmgr所在的主机和端口 运行,以及有效的rasdaman用户名和密码。
$ db_connector = DBConnector("localhost", 7001, "rasadmin", "rasadmin")
创建查询执行器
QueryExcutor是RASQL查询(创建, 执行插入、更新、删除等操作。
$ query_executor = QueryExecutor(db_connector)
打开与Rasdaman的连接
$ db_connector.open()
执行示例查询
下面的查询返回 拉斯达曼。
$ collection_list = query_executor.execute_read("select c from RAS_COLLECTIONNAMES as c") $ print(collection_list)
计算集合mr2中所有值的平均值。
$ result = query_executor.execute_read("select avg_cells(c) from mr2 as c") $ type(result)
根据查询,结果将具有不同的类型(例如 标量值、间隔、数组)。每个数据类型都包装在 对应类别: http://rasdaman.org/browser/applications/rasdapy/rasdapy/models
选择集合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)
创建一个Rasdaman集合。请注意,您应该与 具有写权限的用户;默认情况下,这是rasadmin/rasadmin in 拉斯达曼,但这可以由管理员管理。
$ query_executor.execute_write("create collection test_rasdapy GreySet")
将PNG图像中的数据插入到集合中。同样,你需要 具有此操作的写入权限。
$ query_executor.execute_write("insert into test_rasdapy values decode($1)", "your_path/rasdaman/systemtest/testcases_services/test_all_wcst_import/test_data/wcps_mr/mr_1.png")
或者,可以从原始二进制文件导入数据;在这种情况下 需要指定空间域和数组类型。
$ query_executor.execute_update_from_file("insert into test_rasdapy values $1", "your_path/rasdaman/systemtest/testcases_mandatory/test_select/testdata/101.bin", "[0:100]", "GreyString")
有关rasql的更多示例查询和一般指南,请参见 rasql查询语言指南 (http://rasdaman.org/browser/manuals_and_examples/manuals/doc-guides)。
关闭与Rasdaman的连接
$ 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()
开发警告
协议缓冲区的python实现不如 c++和Java实现。它可能更轻便,众所周知 这个时候要慢一点。因为这个图书馆非常依赖 协议缓冲区和GRPC,可能会偶尔出现打嗝和 意外的行为。
贡献者
- 邦范虎
- 悉达思·舒克拉
- 米塞夫
也要感谢
- 亚历克斯·米尔恰·杜米特鲁
- 弗拉德·梅尔蒂卡里
- 乔治·梅蒂卡里
- 亚历克斯·托德
- 彼得·鲍曼