你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

本快速入门介绍如何使用 Azure Python SDK 与 Azure Database for PostgreSQL 灵活服务器实例交互。

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

可以使用此库执行以下操作:

  1. 创建 PostgreSQL 灵活服务器
  2. 管理数据库
  3. 配置防火墙规则
  4. 缩放操作
  5. 备份和还原

本指南可帮助你了解此 SDK 的基本功能,包括创建灵活服务器实例、查看创建的服务器、创建数据库以及删除实例。

先决条件

具有有效订阅的帐户

具有有效订阅的 Azure 帐户 - 免费创建一个

安装库

安装以下 Azure Python 库。

Bash
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers

运行登录命令

使用 azurecli 对帐户进行身份验证,登录到帐户。

Azure CLI
az login

执行此命令后,选择要登录的有效帐户,然后从列表中选择要登录的订阅 ID。

创建服务器

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

Python
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id="<subscription-id>",
    )

    response = client.servers.begin_create(
        resource_group_name="<resource-group-name>",
        server_name="<server-name>",
        parameters={
            "location": "<region>",
            "properties": {
                "administratorLogin": "<admin-username>",
                "administratorLoginPassword": "<password>",
                "availabilityZone": "1",
                "backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"},
                "createMode": "Create",
                "highAvailability": {"mode": "ZoneRedundant"},
                "network": {
                    "delegatedSubnetResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
                    "privateDnsZoneArmResourceId": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Network/privateDnsZones/<private-DNS-zone-name>.postgres.database.azure.com",
                },
                "version": "<pg-version>",
            },
            "sku": {"name": "<sku-name>", "tier": "<tier-type>"},
            "tags": {"ElasticServer": "1"},
        },
    ).result()
    print(response)

if __name__ == "__main__":
    main()

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

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

还可以为其他参数添加值,例如 vnet-name、subnet-name、private-DNS-zone,以及自定义存储大小、引擎版本等其他参数。

备注

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

运行此代码会初始化实例创建过程,此过程可能需要几分钟才能完成。

查看已部署的资源

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

使用 Python SDK 验证部署

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

Python
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)

    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}'.")

使用适当的参数调用它。

Python
 check_server_created(subscription_id, resource_group, server_name)

备注

预配服务器后,函数 check_server_created 会立即返回服务器状态。 但服务器可能需要几分钟才能完全可用。 在连接到服务器之前,请确保等待服务器准备就绪。 它将在响应 postgres_client.servers.get 方法时返回 state、ID、name、location 等参数。

使用 Python 创建数据库

使用此示例代码在灵活服务器中创建数据库

Python
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
    client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id=<subscription-id>,
    )
    # Create database
    response = client.databases.begin_create(
        resource_group_name="<resource-group-name>",
        server_name="<server-name>",
        database_name="<database-name>",
        parameters={"properties": {"charset": "utf8", "collation": "en_US.utf8"}},
    ).result()
    print(response)

if __name__ == "__main__":
    main()

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

  • subscription-id:自己的订阅 ID
  • resource-group-name:命名要使用的资源组。 如果不存在,该脚本将创建新的资源组。
  • sever-name:之前创建的 Azure 数据库灵活服务器实例的名称
  • database-name:要创建的数据库的名称

清理资源

如果不再需要 Azure Database for PostgreSQL 灵活服务器实例,则可以使用 Portal、Python SDK 或 Azure CLI 删除它和关联的资源组。

使用 Python SDK 删除实例

创建“delete_server.py”文件以删除已创建的 Azure Databases for PostgreSQL 服务器实例。

Python
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient

def main():
client = PostgreSQLManagementClient(
        credential=DefaultAzureCredential(),
        subscription_id=<subscription-id>,
 )

client.servers.begin_delete(
        resource_group_name=<rg-name>,
        server_name=<server-name>,
).result()
if __name__ == "__main__":
main()