Guida introduttiva: Usare le librerie di Azure (SDK) per Python per gestire un'istanza del server flessibile PostgreSQL
In questa guida introduttiva si apprenderà come usare Azure Python SDK per interagire con un'istanza del server flessibile Database di Azure per PostgreSQL.
Database di Azure per PostgreSQL server flessibile è un servizio gestito per l'esecuzione, la gestione e il ridimensionamento di database PostgreSQL a disponibilità elevata nel cloud. È possibile usare Python SDK per effettuare il provisioning di un'istanza del server flessibile Database di Azure per PostgreSQL, di più server o di più database in un server.
È possibile eseguire le operazioni seguenti con questo catalogo:
- Creare un server flessibile PostgreSQL
- Gestire database
- Configurare le regole del firewall
- Operazioni di ridimensionamento
- Backup e ripristino
Questa guida illustra le funzionalità di base di questo SDK, inclusa la creazione di un'istanza del server flessibile, la revisione del server creato, la creazione di un database e l'eliminazione dell'istanza.
Prerequisiti
Account con sottoscrizione attiva
Un account Azure con una sottoscrizione attiva Crearne uno gratuitamente.
Installare le librerie
Installare le librerie Python di Azure seguenti.
pip install azure-mgmt-resource
pip install azure-identity
pip install azure-mgmt-postgresqlflexibleservers
Eseguire il comando di accesso
Accedere al proprio account usando azurecli
per autenticare l'account.
az login
Dopo l'esecuzione di questo comando, selezionare un account valido per accedere e quindi selezionare l'ID sottoscrizione dall'elenco per accedere.
Creare il server
Creare un file create_postgres_flexible_server.py
e includere il codice seguente.
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()
Sostituire i parametri seguenti con i propri dati:
- subscription-id: ID sottoscrizione personale.
- resource-group: assegnare un nome al gruppo di risorse che si vuole usare. Se non esiste, lo script ne crea uno nuovo.
-
server-name: nome univoco che identifica l'istanza del server flessibile Database di Azure per PostgreSQL. Il nome
postgres.database.azure.com
di dominio viene aggiunto al nome del server specificato. Il nome del server deve contenere almeno tre caratteri e al massimo 63 caratteri e può contenere solo lettere minuscole, numeri e trattini. -
Località: area di Azure in cui si vuole creare l'istanza del server flessibile Database di Azure per PostgreSQL. Definisce la posizione geografica in cui si trovano il server e i relativi dati. Scegliere un'area vicina agli utenti per ridurre la latenza. Il percorso deve essere specificato nel formato dei nomi brevi dell'area di Azure, ad esempio
westus2
,eastus
onortheurope
. - admin-username: nome utente amministratore primario per il server. Dopo aver creato il server, è possibile creare altri utenti.
- password: password per l'amministratore primario per il server. Deve contenere tra 8 e 128 caratteri. La password deve contenere caratteri di tre categorie: lettere maiuscole, lettere minuscole, numeri (da 0 a 9) e caratteri non alfanumerici (!, $, #, %, ecc.).
È anche possibile aggiungere valori per altri parametri, ad esempio vnet-name, subnet-name, private-DNS-zone e personalizzare altri parametri, ad esempio dimensioni di archiviazione, versione del motore e così via.
Nota
La classe DefaultAzureCredential tenta di eseguire l'autenticazione usando vari metodi, ad esempio variabili di ambiente, identità gestite o l'interfaccia della riga di comando di Azure.
Assicurarsi di avere uno di questi metodi configurati. Altre informazioni sull'autenticazione sono disponibili nella documentazione di Azure SDK.
L'esecuzione di questo codice avvia il processo di creazione dell'istanza, che potrebbe richiedere alcuni minuti.
Esaminare le risorse distribuite
È possibile usare Python SDK, portale di Azure, interfaccia della riga di comando di Azure, Azure PowerShell e vari altri strumenti per convalidare la distribuzione ed esaminare le risorse distribuite. Di seguito sono indicati alcuni esempi.
Convalidare la distribuzione con Python SDK
Aggiungere la funzione check_server_created
allo script esistente per usare l'attributo servers dell'istanza postgreSQLManagementClient per verificare se è stata creata l'istanza del server flessibile Database di Azure per 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)
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}'.")
Chiamarlo con i parametri appropriati.
check_server_created(subscription_id, resource_group, server_name)
Nota
La check_server_created
funzione restituisce lo stato del server non appena viene effettuato il provisioning del server. Tuttavia, il server potrebbe richiedere alcuni minuti per diventare completamente disponibile. Assicurarsi di attendere che il server sia pronto prima di connettersi. Restituisce lo stato, l'ID, il nome, la posizione e altri parametri in risposta al metodo postgres_client.servers.get.
Creare un database con Python
Creare un database nel server flessibile con questo codice di esempio
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()
Sostituire i parametri seguenti con i dati
- subscription-id: ID sottoscrizione personale.
- resource-group-name: assegnare un nome al gruppo di risorse che si vuole usare. Lo script crea un nuovo gruppo di risorse, se non esiste.
- sever-name: nome dell'istanza del server flessibile del database di Azure creata in precedenza
- database-name: nome del database che si desidera creare.
Pulire le risorse
Se non è più necessaria l'istanza del server flessibile Database di Azure per PostgreSQL, è possibile eliminarla e il gruppo di risorse associato usando il portale, Python SDK o l'interfaccia della riga di comando di Azure.
Usare Python SDK per eliminare l'istanza
Creare un file "delete_server.py" per eliminare l'istanza del server Database di Azure per PostgreSQL creata.
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()