蟒蛇接口

rasdap的Python项目详细描述


*rasdapy是rasdaman的客户端api,它支持 使用python执行rasql查询。*

要求

安装

  1. 如果使用Python2和Python,请确保使用Python2.7或更高版本 如果使用Python3,则为3.4或更高版本。如果有疑问,请运行:

    $python–版本

  2. 如果没有安装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,可能会偶尔出现打嗝和 意外的行为。

贡献者

  • 邦范虎
  • 悉达思·舒克拉
  • 米塞夫

也要感谢

  • 亚历克斯·米尔恰·杜米特鲁
  • 弗拉德·梅尔蒂卡里
  • 乔治·梅蒂卡里
  • 亚历克斯·托德
  • 彼得·鲍曼

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法使用JSF访问托管bean方法   java是制作具有多值类型的HashMap的正确方法   javafx中TicTacToe的java更新UI   windows Java文件。getCanonicalFile()无法处理冒号“:”   java在一个布局屏幕中创建多个(26)按钮   java Android Studio:Gradle构建完成,有251个错误   我们如何在Java上为callfireapiclient编写单元/集成测试?   java无法将1715UTC转换为本地/gmt类型   具有已定义的数字序列的JAVA循环   Java程序正在netbeans中编译,但未在CMD中编译,包不存在   java Android构造函数和onCreate()之间有什么区别?   java配置弹性搜索结果评分   java LibGDX纹理是否可绘制?   java如何在Android中设置应用程序默认打开pdf   java是否有一种创造性的方法将多个参数传递给contentEquals()方法?   java在Android上存储Ed25519私钥