有办法为python azure blob storage SDK异步使用blob_client.query_blob()吗?

siv3szwd  于 2023-04-07  发布在  Python
关注(0)|答案(1)|浏览(105)
azure.storage.blob.aio import BlobServiceClient as BlobServiceClientAsync

async def query_blob_async(self): 
        blob_service_client = BlobServiceClientAsync.from_connection_string(
            self.connection_string_srct.get_secret_value()
        )
        async with blob_service_client:
            container_client = blob_service_client.get_container_client(self.container)
            blob_client = container_client.get_blob_client(blob)
            data_reader = await blob_client.query_blob(  # nosec
                f"SELECT * FROM BlobStorage where measurement_source_id in {in_string}",
                blob_format=parquet_format,
                output_format=csv_format,
            )

我尝试异步使用blob*client.query_*blob(),但在尝试上面的代码时,我得到以下错误:
“无法解包不可迭代的协同程序对象”。
我可以看到blob_client对象有query_blob方法,但看不到任何关于如何异步使用它的文档。任何帮助都将非常感谢:)

6pp0gazn

6pp0gazn1#

我在我的环境中试了一下,得到的结果是:

您可以使用下面的代码使用azure-blob存储**query_blobs**。

验证码:

import asyncio
from azure.storage.blob import BlobServiceClient, DelimitedJsonDialect, DelimitedTextDialect

async def query_blob_async():
    connection_string = "<connect-string>"
    container_name = "test3"
    blob_name = "Employee Sample Data.csv"
    
    blob_service_client = BlobServiceClient.from_connection_string(connection_string)
    container_client = blob_service_client.get_container_client(container_name)
    blob_client = container_client.get_blob_client(blob_name)
    query_expression = "SELECT _2 from BlobStorage"
    input_format = DelimitedTextDialect(delimiter=',', quotechar='"', lineterminator='\n', escapechar="", has_header=False)
    output_format = DelimitedJsonDialect(delimiter='\n')

    reader = blob_client.query_blob(query_expression, blob_format=input_format, output_format=output_format)
    content = reader.readall()
    print(content)
    
asyncio.run(query_blob_async())

输出:

上述查询已成功执行,您可以查看CSV文件的第二列。

b'{"_1":"Full Name"}\n{"_1":"Kai Le"}\n{"_1":"Robert Patel"}\n{"_1":"Cameron Lo"}\n{"_1":"Harper Castillo"}\n{"_1":"Harper Dominguez"}\n{"_1":"Ezra Vu"}\n{"_1":"Jade Hu"}\n{"_1":"Miles Chang"}\n{"_1":"Gianna Holmes"}\n{"_1":"Jameson Thomas"}\n{"_1":"Jameson Pena"}\n{"_1":"Bella Wu"}\n{"_1":"Jose Wong"}\n{"_1":"Lucas Richardson"}\n{"_1":"Jacob Moore"}\n{"_1":"Luna Lu"}\n{"_1":"Bella Tran"}\n{"_1":"Ivy Chau"}\n{"_1":"Jordan Kumar"}\n{"_1":"Sophia Gutierrez"}\n{"_1":"Eli Dang"}\n{"_1":"Lillian Lewis"}\n{"_1":"Serenity Cao"}\n{"_1":"Parker Lai"}\n

**引用:**azure.storage.blob.BlobClient类|微软学习

相关问题