Python库,用于具有通用方法的不同对象存储。

object-store的Python项目详细描述


不同平台的Python对象存储库

这是一个python库,用于具有通用方法的不同对象存储。在

它目前支持以下对象存储平台:

该库允许并遵循以下列出的对象存储平台的基本功能:

  • 连接到特定对象存储
  • 将对象存储到存储桶
  • 从存储桶检索对象

目录

先决条件

要正确地构建和使用库,您必须安装python2(使用pip)或python3(使用pip3)并设置 虚拟环境。对于python安装,您可能需要运行以下命令:

sudo apt update
sudo apt install -y python3-venv python3-wheel python-wheel-common

安装

安装object_store库的最简单方法是将其安装到虚拟环境中:

^{pr2}$

在此之后,您可以使用import object_store在python文件中导入库。在

清理

清理过程也很重要。要取消安装此库,请对python2运行pip uninstall object store,或者对python3运行pip3 uninstall object store。你呢 还应该从解释器路径中删除文件(例如rm -rf ~/.local/lib/python3.7/site-packages/object_store/以及rm -rf ~/.local/lib/python3.7/site-packages/object_store-0.1.0.dist-info/之类的任何wheel文件)。 控制盘文件也存在于库的dist文件夹中。如果你想重新安装库,你应该删除它们。在

使用

这个库提供了不同的函数,可以与不同的对象存储一起使用。在

支持的对象存储以python枚举类型存储,命名为ObjectStorageType,其中三个常量表示三个对象 指定存储:AWS_S3AZURE_CONTAINERSMINIO。在

目前您可以使用以下方法:

MethodPurpose
create_clientCreates a new objest store client
retrieve_from_bucketRetrieves object from bucket
store_to_bucketStores object to bucket

这些方法将在下一节中进一步解释。在

创建特定对象存储客户端

要创建对象存储客户机,必须使用create_client(self, *args, **kwargs)方法。在

MinIO

如果您使用的是MinIO对象存储,您必须以某种方式提供存储的IP及其访问和 密钥。您可以直接通过将关键字参数放入create client方法来实现这一点,例如 这个:

fromobject_store.min_ioimportMinIOminio=MinIO()minio.create_client(ip='192.0.2.1',access_key='AKIAIOSFODNN7EXAMPLE',secret_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')

为了避免直接接触不同的对象存储,是一个名为ObjectStorageCreator的类,它创建 使用create_storage函数为我们存储对象。请小心将正确的ObjectStorageType传递给其构造函数。所以在MinIO的情况下,我们将使用ObjectStorageType.MINIO。完整用法如下例所示(对于MinIO凭据,我们使用示例IPs、access key和secret key):

fromobject_store.object_storage_creatorimportObjectStorageCreatorfromobject_store.object_storage_typeimportObjectStorageTypeobject_storage_creator=ObjectStorageCreator(ObjectStorageType.MINIO)minio_client=object_storage_creator.create_storage(ip='192.0.2.1',access_key='AKIAIOSFODNN7EXAMPLE',secret_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')
美国焊接学会S3

对于aws3 bucket存储,必须将存储类型设置为ObjectStorageType.AWS_S3。从那里你可以 使用create_storage函数创建您的客户机,因为这将自动为您提供 在你的系统上设置的。在

fromobject_store.object_storage_creatorimportObjectStorageCreatorfromobject_store.object_storage_typeimportObjectStorageTypeobject_storage_creator=ObjectStorageCreator(ObjectStorageType.AWS_S3)aws_s3_client=object_storage_creator.create_storage()

Azure

对于Azure容器BLOB存储,必须将存储类型设置为ObjectStorageType.AZURE_CONTAINERS。从那里你可以使用create_storage函数来创建你的客户端并传递你的Azure连接字符串(你可以在Azure门户inder Azure Active Directory设置中找到它)。在

fromobject_store.object_storage_creatorimportObjectStorageCreatorfromobject_store.object_storage_typeimportObjectStorageTypeobject_storage_creator=ObjectStorageCreator(ObjectStorageType.AZURE_CONTAINERS)azure_client=object_storage_creator.create_storage(connection_string="your-connection-string")

铲斗读数

为了从对象存储中的bucket中获取一些内容,可以自由地使用retrieve_from_bucket(self, source_bucket, file_name)方法,其中传递source_bucket变量作为bucket的名称,而{}是bucket中要检索的元素的名称(文件/元素也将以相同的名称存储在/tmp文件夹中)。看到了吗 示例如下:

fromobject_store.object_storage_creatorimportObjectStorageCreatorfromobject_store.object_storage_typeimportObjectStorageTypeobject_storage_creator=ObjectStorageCreator(ObjectStorageType.AWS_S3)aws_s3_client=object_storage_creator.create_storage()aws_s3_client.retrieve_from_bucket("my_bucket","my_picture")

写入bucket

要将某些内容存储到现有的bucket中,请使用store_to_bucket(self, destination_bucket, file_name, img_path)方法,其中 传递destination_bucket参数作为要存储对象的存储桶的名称。的名称 bucket中的元素必须使用file_name参数指定,而img_path参数是fot 元素的绝对/相对路径。参见以下示例:

fromobject_store.object_storage_creatorimportObjectStorageCreatorfromobject_store.object_storage_typeimportObjectStorageTypeobject_storage_creator=ObjectStorageCreator(ObjectStorageType.MINIO)minio_client=object_storage_creator.create_storage(ip='192.0.2.1',access_key='AKIAIOSFODNN7EXAMPLE',secret_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')minio_client.store_to_bucket("my_destination_bucket","my_new_picture","/home/pc/image.png")

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

推荐PyPI第三方库


热门话题
java如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal