快速入门:使用适用于 Python 的 Azure 库 (SDK) 创建 Azure Database for PostgreSQL 灵活服务器实例
本快速入门介绍如何使用适用于 Python 的 Azure 库 (SDK) 创建 Azure Database for PostgreSQL 灵活服务器实例。
Azure Database for PostgreSQL 灵活服务器是一项托管服务,用于在云中运行、管理和缩放高度可用的 PostgreSQL 数据库。 可以使用 Python SDK 在服务器上预配 Azure Database for PostgreSQL 灵活服务器实例、多个服务器或多个数据库。
可以使用此库执行以下操作:
- 创建 PostgreSQL 灵活服务器
- 管理数据库
- 配置防火墙规则
- 缩放操作
- 备份和还原
先决条件
具有活动订阅的 Azure 帐户。 创建一个试用帐户。
创建服务器
首先,安装所需的包。
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers
创建文件 create_postgres_flexible_server.py
并包含以下代码。
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id="ffffffff-ffff-ffff-ffff-ffffffffffff",
base_url="https://management.chinacloudapi.cn/",
)
response = client.servers.begin_create(
resource_group_name="testrg",
server_name="pgtestsvc4",
parameters={
"location": "chinanorth3",
"properties": {
"administratorLogin": "cloudsa",
"administratorLoginPassword": "<password>",
"availabilityZone": "1",
"backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"},
"createMode": "Create",
"highAvailability": {"mode": "ZoneRedundant"},
"network": {
"delegatedSubnetResourceId": "/subscriptions/ffffffff-ffff-ffff-ffff-ffffffffffff/resourceGroups/testrg/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/test-vnet-subnet",
"privateDnsZoneArmResourceId": "/subscriptions/ffffffff-ffff-ffff-ffff-ffffffffffff/resourcegroups/testrg/providers/Microsoft.Network/privateDnsZones/test-private-dns-zone.postgres.database.chinacloudapi.cn",
},
"storage": {"autoGrow": "Disabled", "storageSizeGB": 512, "tier": "P20"},
"version": "12",
},
"sku": {"name": "Standard_D4s_v3", "tier": "GeneralPurpose"},
"tags": {"ElasticServer": "1"},
},
).result()
print(response)
# x-ms-original-file: specification/postgresql/resource-manager/Microsoft.DBforPostgreSQL/preview/2023-12-01-preview/examples/ServerCreate.json
if __name__ == "__main__":
main()
将以下参数替换为你的数据:
- subscription_id:自己的订阅 ID。
- resource_group:要使用的资源组的名称。 如果不存在,该脚本将创建新的资源组。
- server_name:用于标识 Azure Database for PostgreSQL 灵活服务器实例的唯一名称。 域名
postgres.database.chinacloudapi.cn
将追加到所提供的服务器名称后面。 服务器名称必须至少为 3 个字符且最多 63 个字符,并且只能包含小写字母、数字和连字符。 - 位置:要在其中创建 Azure Database for PostgreSQL 灵活服务器实例的 Azure 区域。 它定义服务器及其数据所在的地理位置。 选择靠近用户的区域,可降低延迟。 位置应指定为 Azure 区域短名称的格式,例如
chinaeast2
、chinanorth2
。 - 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/')
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="ffffffff-ffff-ffff-ffff-ffffffffffff",
base_url="https://management.chinacloudapi.cn/",
)
#Create database
response = client.databases.begin_create(
resource_group_name=<rg-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:要使用的资源组的名称。 如果不存在,该脚本将创建新的资源组。
- sever_name:之前创建的 Azure 数据库灵活服务器实例的名称
还可以删除创建的数据库
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id="ffffffff-ffff-ffff-ffff-ffffffffffff",
base_url="https://management.chinacloudapi.cn/",
)
client.databases.begin_delete(
resource_group_name="TestGroup",
server_name="testserver",
database_name="db1",
).result()
if __name__ == "__main__":
main()
清理资源
如果不再需要 Azure Database for PostgreSQL 灵活服务器实例,则可以使用以下方法删除它和关联的资源组。
创建“delete_server.py”文件以删除创建的灵活服务器实例。
from azure.identity import DefaultAzureCredential
from azure.mgmt.postgresqlflexibleservers import PostgreSQLManagementClient
def main():
client = PostgreSQLManagementClient(
credential=DefaultAzureCredential(),
subscription_id=<subscription-id>,
base_url="https://management.chinacloudapi.cn/",
)
client.servers.begin_delete(
resource_group_name=<rg-name>,
server_name=<server-name>,
).result()
if __name__ == "__main__":
main()