Đọc dữ liệu Azure blob bằng Python

Lưu trữ Azure Blob là dịch vụ lưu trữ dữ liệu phi cấu trúc trên đám mây dưới dạng đối tượng/đốm màu. Lưu trữ blob có thể lưu trữ bất kỳ loại dữ liệu văn bản hoặc nhị phân nào, chẳng hạn như tài liệu, tệp phương tiện hoặc trình cài đặt ứng dụng. Lưu trữ blob còn được gọi là lưu trữ đối tượng

Bài viết này sẽ hướng dẫn bạn cách thực hiện các tình huống phổ biến bằng cách sử dụng bộ lưu trữ Blob. Các mẫu được viết bằng Python và sử dụng SDK lưu trữ Microsoft Azure cho Python. Các tình huống được đề cập bao gồm tải lên, liệt kê, tải xuống và xóa các đốm màu

[SẮC. BAO GỒM lưu trữ-blob-khái niệm-bao gồm]

[SẮC. BAO GỒM lưu trữ-tạo-tài khoản-bao gồm]

Tạo một thùng chứa

Dựa trên loại blob bạn muốn sử dụng, hãy tạo một đối tượng BlockBlobService, AppendBlobService hoặc PageBlobService. Đoạn mã sau sử dụng đối tượng BlockBlobService. Thêm phần sau vào gần đầu bất kỳ tệp Python nào mà bạn muốn truy cập theo chương trình Bộ lưu trữ Azure Block Blob

from azure.storage.blob import BlockBlobService

Đoạn mã sau tạo đối tượng BlockBlobService bằng tên tài khoản lưu trữ và khóa tài khoản. Thay 'myaccount' và 'mykey' bằng tên tài khoản và khóa của bạn

block_blob_service = BlockBlobService(account_name='myaccount', account_key='mykey')

[SẮC. BAO GỒM lưu trữ-vùng chứa-đặt tên-quy tắc-bao gồm]

Trong ví dụ mã sau, bạn có thể sử dụng đối tượng BlockBlobService để tạo vùng chứa nếu nó không tồn tại

block_blob_service.create_container('mycontainer')

Theo mặc định, vùng chứa mới là riêng tư, vì vậy bạn phải chỉ định khóa truy cập bộ nhớ của mình (như bạn đã làm trước đó) để tải xuống các đốm màu từ vùng chứa này. Nếu bạn muốn cung cấp các đốm màu trong vùng chứa cho mọi người, bạn có thể tạo vùng chứa và chuyển cấp truy cập công khai bằng mã sau

from azure.storage.blob import PublicAccess
block_blob_service.create_container('mycontainer', public_access=PublicAccess.Container)

Ngoài ra, bạn có thể sửa đổi vùng chứa sau khi đã tạo vùng chứa bằng mã sau

block_blob_service.set_container_acl('mycontainer', public_access=PublicAccess.Container)

Sau thay đổi này, bất kỳ ai trên Internet đều có thể nhìn thấy các đốm màu trong vùng chứa công cộng nhưng chỉ bạn mới có thể sửa đổi hoặc xóa chúng

Tải một đốm màu lên vùng chứa

Để tạo một khối blob và tải dữ liệu lên, hãy sử dụng các phương thức create_blob_from_path, create_blob_from_stream, create_blob_from_bytes hoặc create_blob_from_text. Chúng là các phương thức cấp cao thực hiện phân đoạn cần thiết khi kích thước của dữ liệu vượt quá 64 MB

create_blob_from_path tải lên nội dung của tệp từ đường dẫn đã chỉ định và create_blob_from_stream tải lên nội dung từ tệp/luồng đã mở. create_blob_from_bytes tải lên một mảng byte và create_blob_from_text tải lên giá trị văn bản đã chỉ định bằng cách sử dụng mã hóa đã chỉ định (mặc định là UTF-8)

Ví dụ sau tải lên nội dung của hoàng hôn. png vào blob myblob

from azure.storage.blob import ContentSettings
block_blob_service.create_blob_from_path(
    'mycontainer',
    'myblockblob',
    'sunset.png',
    content_settings=ContentSettings(content_type='image/png')
			)

Liệt kê các đốm màu trong một vùng chứa

Để liệt kê các đốm màu trong một vùng chứa, hãy sử dụng phương thức list_blobs. Phương thức này trả về một trình tạo. Đoạn mã sau xuất tên của từng đốm màu trong vùng chứa ra bàn điều khiển

generator = block_blob_service.list_blobs('mycontainer')
for blob in generator:
	print(blob.name)

Tải xuống các đốm màu

Để tải xuống dữ liệu từ blob, hãy sử dụng get_blob_to_path, get_blob_to_stream, get_blob_to_bytes hoặc get_blob_to_text. Chúng là các phương thức cấp cao thực hiện phân đoạn cần thiết khi kích thước của dữ liệu vượt quá 64 MB

Ví dụ sau minh họa việc sử dụng get_blob_to_path để tải xuống nội dung của blob myblob và lưu trữ nó cho đến khi mặt trời lặn. tập tin png

block_blob_service.get_blob_to_path('mycontainer', 'myblockblob', 'out-sunset.png')

Xóa một đốm màu

Cuối cùng, để xóa một đốm màu, hãy gọi delete_blob

________số 8_______

Viết cho một append blob

Một đốm màu chắp thêm được tối ưu hóa cho các hoạt động chắp thêm, chẳng hạn như ghi nhật ký. Giống như một block blob, một append blob bao gồm các khối, nhưng khi bạn thêm một khối mới vào một append blob, nó luôn được thêm vào cuối blob. Bạn không thể cập nhật hoặc xóa một khối hiện có trong một đốm màu nối thêm. ID khối cho một blob nối thêm không được hiển thị như chúng dành cho một blob khối

Mỗi khối trong một đốm màu nối thêm có thể có kích thước khác nhau, tối đa là 4 MB và một đốm màu nối thêm có thể bao gồm tối đa 50.000 khối. Do đó, kích thước tối đa của một append blob lớn hơn 195 GB một chút (4 MB X 50.000 khối)

Ví dụ dưới đây tạo một append blob mới và thêm một số dữ liệu vào nó, mô phỏng một thao tác ghi nhật ký đơn giản