你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
快速入门:使用适用于 Python 的 Azure 库 (SDK) 管理 PostgreSQL 灵活服务器实例
本文内容
先决条件
创建服务器
查看已部署的资源
使用 Python 创建数据库
清理资源
相关内容
显示另外 2 个
本快速入门介绍如何使用 Azure Python SDK 与 Azure Database for PostgreSQL 灵活服务器实例交互。
Azure Database for PostgreSQL 灵活服务器是一项托管服务,用于在云中运行、管理和缩放高度可用的 PostgreSQL 数据库。 可以使用 Python SDK 在服务器上预配 Azure Database for PostgreSQL 灵活服务器实例、多个服务器或多个数据库。
可以使用此库执行以下操作:
创建 PostgreSQL 灵活服务器
管理数据库
配置防火墙规则
缩放操作
备份和还原
本指南可帮助你了解此 SDK 的基本功能,包括创建灵活服务器实例、查看创建的服务器、创建数据库以及删除实例。
具有有效订阅的 Azure 帐户 - 免费创建一个 。
安装以下 Azure Python 库。
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers
使用 azurecli
对帐户进行身份验证,登录到帐户。
az login
执行此命令后,选择要登录的有效帐户,然后从列表中选择要登录的订阅 ID。
创建文件 create_postgres_flexible_server.py
并包含以下代码。
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 区域短名称的格式(如 westus2
、eastus
或 northeurope
)指定。
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 和其他各种工具来验证部署并查看已部署的资源。 下面提供了一些示例。
将 check_server_created
函数添加到现有脚本,以使用 PostgreSQLManagementClient 实例的服务器属性来检查是否已创建 Azure Database for PostgreSQL 灵活服务器实例:
def check_server_created (subscription_id, resource_group, server_name) :
credential = DefaultAzureCredential()
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} '." )
使用适当的参数调用它。
check_server_created(subscription_id, resource_group, server_name)
备注
预配服务器后,函数 check_server_created
会立即返回服务器状态。 但服务器可能需要几分钟才能完全可用。 在连接到服务器之前,请确保等待服务器准备就绪。 它将在响应 postgres_client.servers.get 方法时返回 state、ID、name、location 等参数。
使用此示例代码在灵活服务器中创建数据库
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main () :
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id=<subscription-id>,
)
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 删除它和关联的资源组。
创建“delete_server.py”文件以删除已创建的 Azure Databases for PostgreSQL 服务器实例。
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()
az postgres flexible-server delete --resource-group <resource-group> --name <server-name>