共用方式為


快速入門:使用適用於 Python 的 Azure 連結庫 (SDK) 來管理 PostgreSQL 彈性伺服器實例

在本快速入門中,您將瞭解如何使用 Azure Python SDK 與 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例互動。

適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器是受控服務,可在雲端中執行、管理及調整高可用性 PostgreSQL 資料庫。 您可以使用 Python SDK 在伺服器上佈建適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體、多部伺服器或多個資料庫。

您可以透過此程式庫執行下列作業:

  1. 建立 PostgreSQL 彈性伺服器
  2. 管理資料庫
  3. 設定防火牆規則
  4. 調整作業
  5. 備份及還原

本指南可協助您探索此 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 區域簡短名稱格式指定,例如 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 執行個體的伺服器屬性來檢查是否已建立適用於 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()