快速入门:使用适用于 Python 的 Azure 库 (SDK) 创建 Azure Database for PostgreSQL 灵活服务器实例

适用于:Azure Database for PostgreSQL - 灵活服务器

本快速入门介绍如何使用适用于 Python 的 Azure 库 (SDK) 创建 Azure Database for PostgreSQL 灵活服务器实例。

Azure Database for PostgreSQL 灵活服务器是一项托管服务,用于在云中运行、管理和缩放高度可用的 PostgreSQL 数据库。 可以使用 Python SDK 在服务器上预配 Azure Database for PostgreSQL 灵活服务器实例、多个服务器或多个数据库。

先决条件

具有活动订阅的 Azure 帐户。 创建一个试用帐户

创建服务器

首先,安装所需的包。

pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-rdbms

创建文件 create_postgres_flexible_server.py 并包含以下代码。

from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.rdbms.postgresql_flexibleservers import PostgreSQLManagementClient
from azure.mgmt.rdbms.postgresql_flexibleservers.models import Server, Sku, Storage


def create_postgres_flexible_server(subscription_id, resource_group, server_name, location):
    # Authenticate with your Azure account
    credential = DefaultAzureCredential()

    # Create resource management client and PostgreSQL management client
    resource_client = ResourceManagementClient(credential, subscription_id, base_url='https://management.chinacloudapi.cn/', credential_scopes=['https://management.chinacloudapi.cn/.default'])
    postgres_client = PostgreSQLManagementClient(credential, subscription_id, base_url='https://management.chinacloudapi.cn/', credential_scopes=['https://management.chinacloudapi.cn/.default'])

    # Create resource group
    resource_client.resource_groups.create_or_update(
        resource_group,
        {
            'location': location
        }
    )

    # Create PostgreSQL Flexible Server
    server_params = Server(
        location='<location>',
        sku=Sku(name='Standard_D4s_v3', tier='GeneralPurpose'),
        administrator_login='pgadmin',
        administrator_login_password='<mySecurePassword>',
        storage=Storage(storage_size_gb=32),
        version="16",
        create_mode="Create"
    )

    postgres_client.servers.begin_create(
        resource_group,
        server_name,
        server_params
    ).result()

    print(f"PostgreSQL Flexible Server '{server_name}' created in resource group '{resource_group}'")


if __name__ == '__main__':
    subscription_id = '<subscription_id>'
    resource_group = '<resource_group>'
    server_name = '<servername>'

    create_postgres_flexible_server(subscription_id, resource_group, server_name, location)

将以下参数替换为你的数据:

  • subscription_id:自己的订阅 ID
  • resource_group:要使用的资源组的名称。 如果不存在,该脚本将创建新的资源组。
  • server_name:用于标识 Azure Database for PostgreSQL 灵活服务器实例的唯一名称。 域名 postgres.database.chinacloudapi.cn 将追加到所提供的服务器名称后面。 服务器名称必须至少为 3 个字符且最多 63 个字符,并且只能包含小写字母、数字和连字符。
  • 位置:要在其中创建 Azure Database for PostgreSQL 灵活服务器实例的 Azure 区域。 它定义服务器及其数据所在的地理位置。 选择靠近用户的区域,可降低延迟。 位置应指定为 Azure 区域短名称的格式,例如 chinaeast2chinanorth2
  • administrator_login:服务器的主管理员用户名。 可在创建组后添加其他用户。
  • administrator_login_password:服务器主管理员的密码。 该密码必须包含 8 到 128 个字符。 密码必须包含以下三个类别的字符:英文大写字母、英文小写字母、数字 (0 到 9)和非字母数字字符(!, $, #, % 等)。

还可以自定义其他参数,例如存储大小、引擎版本等。

注意

请注意,DefaultAzureCredential 类将尝试使用各种方法(例如环境变量、托管标识或 Azure CLI)进行身份验证。 确保已设置以下方法之一。 可以在 Azure SDK 文档中查找有关身份验证的详细信息。

查看已部署的资源

可以使用 Python SDK、Azure 门户、Azure CLI、Azure PowerShell 和其他各种工具来验证部署并查看已部署的资源。 下面提供了一些示例。

check_server_created 函数添加到现有脚本,以使用 PostgreSQLManagementClient 实例的服务器属性来检查是否已创建 Azure Database for PostgreSQL 灵活服务器实例:

def check_server_created(subscription_id, resource_group, server_name):
    # Authenticate with your Azure account
    credential = DefaultAzureCredential()

    # Create PostgreSQL management client
    postgres_client = PostgreSQLManagementClient(credential, subscription_id, base_url='https://management.chinacloudapi.cn/', credential_scopes=['https://management.chinacloudapi.cn/.default'])

    try:
        server = postgres_client.servers.get(resource_group, server_name)
        if server:
            print(f"Server '{server_name}' exists in resource group '{resource_group}'.")
            print(f"Server state: {server.state}")
        else:
            print(f"Server '{server_name}' not found in resource group '{resource_group}'.")
    except Exception as e:
        print(f"Error occurred: {e}")
        print(f"Server '{server_name}' not found in resource group '{resource_group}'.")

使用适当的参数调用它。

    check_server_created(subscription_id, resource_group, server_name)

注意

预配服务器后,函数 check_server_created 将立即返回服务器状态。 但服务器可能需要几分钟才能完全可用。 在连接到服务器之前,确保等待服务器处于“就绪”状态。

清理资源

如果不再需要 Azure Database for PostgreSQL 灵活服务器实例,则可以使用以下方法删除它和关联的资源组。

delete_resources 函数添加到现有脚本,以删除本快速入门中创建的 Azure Database for PostgreSQL 灵活服务器实例和关联的资源组。

def delete_resources(subscription_id, resource_group, server_name):
    # Authenticate with your Azure account
    credential = DefaultAzureCredential()

    # Create resource management client and PostgreSQL management client
    resource_client = ResourceManagementClient(credential, subscription_id, base_url='https://management.chinacloudapi.cn/', credential_scopes=['https://management.chinacloudapi.cn/.default'])
    postgres_client = PostgreSQLManagementClient(credential, subscription_id, base_url='https://management.chinacloudapi.cn/', credential_scopes=['https://management.chinacloudapi.cn/.default'])

    # Delete PostgreSQL Flexible Server
    postgres_client.servers.begin_delete(resource_group, server_name).result()
    print(f"Deleted PostgreSQL Flexible Server '{server_name}' in resource group '{resource_group}'.")

    # Delete resource group
    resource_client.resource_groups.begin_delete(resource_group).result()
    print(f"Deleted resource group '{resource_group}'.")

# Call the delete_resources function
delete_resources(subscription_id, resource_group, server_name)