Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách dùng Boto3 xóa database từ AWS Data Catalog

Đề bài − Sử dụng thư viện boto3 trong Python để xóa một database, được tạo trong tài khoản.

Ví dụ − Xóa database 'Portfolio' được tạo trong tài khoản.

Cách tiếp cận/Thuật toán giải quyết

Bước 1 − Nhập boto3 và botocore exceptions để xử lý ngoại lệ.

Bước 2 − Truyền tham số database_name cần xóa từ AWS Glue Catalog.

Bước 3 − Tạo phiên AWS bằng boto3. Đảm bảo region_name trong profile mặc định. Nếu không, truyền rõ ràng region_name khi tạo phiên.

Bước 4 − Tạo client AWS cho glue.

Bước 5 − Sử dụng hàm delete_database và truyền database_name làm tham số Name.

Bước 6 − Nó sẽ xóa database và trả về response metadata.

Bước 7 − Xử lý ngoại lệ chung nếu có lỗi xảy ra khi kiểm tra job.

Lưu ý: Sau khi hoàn thành thao tác này, người dùng sẽ không thể truy cập các bảng (và tất cả phiên bản bảng, partition thuộc về các bảng) và hàm do người dùng định nghĩa (stored procedures) trong database đã xóa. AWS Glue xóa các tài nguyên "mồ côi" này một cách bất đồng bộ trong thời gian thích hợp, theo quyết định của dịch vụ.

Ví dụ

Sử dụng code sau để xóa database từ AWS Glue Data Catalog:

import boto3
from botocore.exceptions import ClientError

def delete_a_database(database_name):
    session = boto3.session.Session()
    glue_client = session.client('glue')
    try:
        response = glue_client.delete_database(Name=database_name)
        return response
    except ClientError as e:
        raise Exception("boto3 client error in delete_a_database: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in delete_a_database: " + e.__str__())

print(delete_a_database("Portfolio"))

Kết quả

{'ResponseMetadata': {'RequestId': '067b667f-0a74d4f30a5b', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 27 Feb 2021 14:54:30 GMT', 'content-type': 'application/x-amz-json-1.1', 'contentlength': '2', 'connection': 'keep-alive', 'x-amzn-requestid': '067b667f0a10-4f99-91be-0a74d4f30a5b'}, 'RetryAttempts': 0}}