在本快速入門中,您將瞭解如何使用 Azure Python SDK 與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例互動。
適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器是受控服務,可在雲端中執行、管理及調整高可用性 PostgreSQL 資料庫。 您可以使用 Python SDK 在伺服器上佈建適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體、多部伺服器或多個資料庫。
您可以透過此程式庫執行下列作業:
- 建立 PostgreSQL 彈性伺服器
- 管理資料庫
- 設定防火牆規則
- 調整作業
- 備份及還原
本指南可協助您探索此 SDK 的基本功能,包括建立彈性伺服器實例、檢閱建立的伺服器、建立資料庫,以及刪除實例。
必要條件
具有使用中訂用帳戶的帳戶
具有作用中訂 用帳戶的 Azure 帳戶免費建立一個帳戶。
安裝程式庫
安裝下列 Azure Python 連結庫。
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers
執行登入命令
使用 azurecli
登入您的帳戶,以驗證您的帳戶。
az login
執行此命令之後,請選取要登入的有效帳戶,然後從清單中選取要登入的訂用帳戶標識碼。
建立伺服器
建立 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:您自己的訂用帳戶標識碼。
- resource-group:將您想要使用的資源組名。 如果不存在,腳本會建立新的腳本。
-
server-name:識別 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的唯一名稱。 功能變數名稱
postgres.database.azure.com
會附加至您提供的伺服器名稱。 伺服器名稱至少必須是三個字元,而且最多只能包含63個字元,而且只能包含小寫字母、數位和連字元。 -
位置:您想要在其中建立 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例的 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 和各種其他工具驗證部署,並檢閱已部署的資源。 範例提供如下。
使用 Python SDK 驗證部署
將 check_server_created
函式新增至現有的指令碼,以使用 PostgreSQLManagementClient 執行個體的伺服器屬性來檢查是否已建立適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體:
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}'.")
使用適當參數呼叫。
check_server_created(subscription_id, resource_group, server_name)
注意
函 check_server_created
式會在布建伺服器后立即傳回伺服器狀態。 不過,伺服器可能需要幾分鐘的時間才能完全可用。 請確定您等待伺服器準備好再連線到伺服器。 它會傳回狀態、標識碼、名稱、位置和其他參數,以回應 postgres_client.servers.get 方法。
使用 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:您自己的 訂用帳戶標識碼。
- resource-group-name:命名您想要使用的資源群組。 如果資源群組不存在,此指令碼會建立新資源群組。
- sever-name:您在之前建立的 Azure 資料庫彈性伺服器實例名稱
- database-name:您要建立的資料庫名稱。
清除資源
如果您不再需要 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例,您可以使用入口網站、Python SDK 或 Azure CLI 來刪除它和相關聯的資源群組。
使用 Python SDK 刪除實例
建立 'delete_server.py' 檔案,以刪除已建立的「適用於 PostgreSQL 的 Azure 資料庫」伺服器實例。
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()