Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Dans ce guide de démarrage rapide, vous vous connectez à une instance Azure Database pour PostgreSQL – Serveur flexible en utilisant Python. Vous utilisez ensuite des instructions SQL pour interroger, insérer, mettre à jour et supprimer des données dans la base de données depuis des plateformes macOS, Ubuntu Linux et Windows.
Les étapes de cet article incluent deux méthodes d’authentification : l’authentification Microsoft Entra et l’authentification PostgreSQL. L’onglet Sans mot de passe affiche l’authentification Microsoft Entra et l’onglet Mot de passe affiche l’authentification PostgreSQL.
L’authentification Microsoft Entra est un mécanisme de connexion à Azure Database pour PostgreSQL utilisant les identités définies dans Microsoft Entra ID. Avec l’authentification Microsoft Entra, vous pouvez gérer les identités des utilisateurs de base de données et d’autres services Microsoft dans un emplacement centralisé, ce qui simplifie la gestion des autorisations. Pour en savoir plus, consultez l’authentification Microsoft Entra avec Azure Database pour PostgreSQL.
L’authentification PostgreSQL utilise des comptes stockés dans PostgreSQL. Si vous choisissez d’utiliser des mots de passe comme informations d’identification pour les comptes, ces informations d’identification sont stockées dans la user table. Comme ces mots de passe sont stockés dans PostgreSQL, vous devez gérer vous-même la rotation des mots de passe.
Cet article part du principe que vous connaissez le développement à l’aide de Python, mais que vous débutez avec Azure Database pour PostgreSQL.
Prérequis
- Compte Azure avec un abonnement actif. Créez un compte gratuitement.
- Une instance Azure Database pour PostgreSQL Serveur flexible. Pour créer une instance de serveur flexible Azure Database pour PostgreSQL, consultez Créer une base de données Azure pour PostgreSQL.
- Python 3.8 et version ultérieure.
- Dernier programme d’installation de package pip.
Ajouter des règles de pare-feu pour votre station de travail cliente
- Si vous avez créé votre instance de serveur flexible Azure Database pour PostgreSQL avec un accès privé (intégration de réseau virtuel), vous devez vous connecter à votre serveur à partir d’une ressource au sein du même réseau virtuel que votre serveur. Vous pouvez créer une machine virtuelle et l’ajouter au réseau virtuel créé avec votre instance de serveur flexible Azure Database pour PostgreSQL. Reportez-vous à La mise en réseau.
- Si vous avez créé votre instance Azure Database pour PostgreSQL – Serveur flexible avec l’option Accès public (adresses IP autorisées), vous pouvez ajouter votre adresse IP locale à la liste des règles de pare-feu sur votre serveur. Reportez-vous à La mise en réseau.
Configurer l’intégration de Microsoft Entra sur le serveur (sans mot de passe uniquement)
Si vous suivez les étapes de l’authentification sans mot de passe, l’authentification Microsoft Entra doit être configurée pour votre instance de serveur et le rôle d’administrateur Microsoft Entra doit vous être attribué sur l’instance de serveur. Suivez les étapes décrites dans Configurer l’intégration de Microsoft Entra pour faire en sorte que l’authentification Microsoft Entra soit configurée pour votre instance de serveur et que le rôle d’administrateur Microsoft Entra vous soit attribué sur votre instance de serveur.
Préparer votre environnement de développement
Accédez à un dossier où vous voulez exécuter le code, et créer et activer un environnement virtuel. Un environnement virtuel est un répertoire autonome pour une version particulière de Python ainsi que les autres packages nécessaires pour cette application.
Exécutez les commandes suivantes pour créer et activer un environnement virtuel :
py -3 -m venv .venv
.venv\Scripts\activate
Installer les bibliothèques Python
Installez les bibliothèques Python nécessaires pour exécuter les exemples de code.
Installez la bibliothèque azure-identity, qui assure la prise en charge de l’authentification par jeton Microsoft Entra dans le Kit de développement logiciel (SDK) Azure.
# Use the interpreter-bound pip to ensure installs go into the active venv/interpreter
python -m pip install --upgrade pip
python -m pip install azure-identity azure-keyvault-secrets
Ajouter du code pour l’authentification
Dans cette section, vous ajoutez du code pour l’authentification à votre répertoire de travail, et vous effectuez les étapes supplémentaires requises pour l’authentification et l’autorisation avec votre instance de serveur.
Avant d’ajouter le code d’authentification, vérifiez que les packages requis pour chaque exemple sont installés.
Packages requis (exemples dans cet article) :
- Exemple sans mot de passe :
azure-identity,azure-keyvault-secrets(si vous utilisez Key Vault) - Exemple de mot de passe :
psycopg(recommandé :python -m pip install "psycopg[binary]")
Facultatif : créez une requirements.txt avec ces entrées et installez-les python -m pip install -r requirements.txt pour les installations reproductibles.
Copiez le code suivant dans un éditeur et enregistrez-le dans un fichier nommé get_conn.py.
import urllib.parse import os from azure.identity import DefaultAzureCredential # IMPORTANT! This code is for demonstration purposes only. It's not suitable for use in production. # For example, tokens issued by Microsoft Entra ID have a limited lifetime (24 hours by default). # In production code, you need to implement a token refresh policy. def get_connection_uri(): # Read URI parameters from the environment dbhost = os.environ['DBHOST'] dbname = os.environ['DBNAME'] dbuser = urllib.parse.quote(os.environ['DBUSER']) sslmode = os.environ['SSLMODE'] # Use passwordless authentication via DefaultAzureCredential. # IMPORTANT! This code is for demonstration purposes only. DefaultAzureCredential() is invoked on every call. # In practice, it's better to persist the credential across calls and reuse it so you can take advantage of token # caching and minimize round trips to the identity provider. To learn more, see: # https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/identity/azure-identity/TOKEN_CACHING.md credential = DefaultAzureCredential() # Call get_token() to get a token from Microsft Entra ID and add it as the password in the URI. # Note the requested scope parameter in the call to get_token, "https://ossrdbms-aad.database.windows.net/.default". password = credential.get_token("https://ossrdbms-aad.database.windows.net/.default").token db_uri = f"postgresql://{dbuser}:{password}@{dbhost}/{dbname}?sslmode={sslmode}" return db_uriObtenez les informations de connexion à la base de données.
- Dans le portail Azure, recherchez et sélectionnez le nom de votre instance de serveur flexible Azure Database pour PostgreSQL.
- Dans la page Vue d’ensemble du serveur, copiez le nom du serveur complet. Le nom de serveur complet se présente toujours sous la forme <my-server-name>.postgres.database.azure.com.
- Dans le menu de gauche, sous Sécurité, sélectionnez Authentification. Vérifiez que votre compte est listé sous Administrateurs Microsoft Entra. Si ce n’est pas le cas, effectuez les étapes décrites dans Configurer l’intégration de Microsoft Entra sur le serveur (sans mot de passe uniquement).
Définissez des variables d’environnement pour les éléments de l’URI de connexion :
set DBHOST=<server-name> set DBNAME=<database-name> set DBUSER=<username> set SSLMODE=requireConnectez-vous à Azure sur votre station de travail. Vous pouvez vous connecter en utilisant Azure CLI, Azure PowerShell ou Azure Developer CLI.
Le code pour l’authentification utilise
DefaultAzureCredentialpour s’authentifier auprès de Microsoft Entra ID et obtenir un jeton qui vous autorise à effectuer des opérations sur votre instance de serveur.DefaultAzureCredentialprend en charge une chaîne de types d’informations d’identification d’authentification. Parmi les informations d’identification prises en charge se trouvent les informations d’identification avec lesquelles vous vous êtes connecté à des outils de développement comme Azure CLI, Azure PowerShell ou Azure Developer CLI.
Comment exécuter les exemples Python
Pour chaque exemple de code dans cet article :
Créez un fichier dans un éditeur de texte.
Ajoutez l’exemple de code au fichier.
Enregistrez le fichier dans votre dossier de projets avec l’extension .py, comme postgres-insert.py. Pour Windows, assurez-vous que l’encodage UTF-8 est sélectionné lorsque vous enregistrez le fichier.
Dans votre dossier de projet, tapez
pythonsuivi du nom de fichier ; par exemplepython postgres-insert.py.
Créer une table et insérer des données
L’exemple de code suivant se connecte à votre base de données de serveur flexible Azure Database pour PostgreSQL à l’aide de la psycopg.connect fonction et charge des données avec une instruction SQL INSERT . La fonction cursor.execute exécute la requête SQL sur la base de données.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Drop previous table of same name if one exists
cursor.execute("DROP TABLE IF EXISTS inventory;")
print("Finished dropping table (if existed)")
# Create a table
cursor.execute("CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);")
print("Finished creating table")
# Insert some data into the table
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("banana", 150))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("orange", 154))
cursor.execute("INSERT INTO inventory (name, quantity) VALUES (%s, %s);", ("apple", 100))
print("Inserted 3 rows of data")
# Clean up
conn.commit()
cursor.close()
conn.close()
Lorsque le code est exécuté correctement, il produit le résultat suivant :
Connection established
Finished dropping table (if existed)
Finished creating table
Inserted 3 rows of data
Lire les données
L’exemple de code suivant se connecte à votre base de données serveur flexible Azure Database pour PostgreSQL et utilise cursor.execute avec l’instruction SQL SELECT pour lire les données. Cette fonction accepte une requête et renvoie un jeu de résultats pour itérer en utilisant cursor.fetchall().
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Fetch all rows from table
cursor.execute("SELECT * FROM inventory;")
rows = cursor.fetchall()
# Print all rows
for row in rows:
print("Data row = (%s, %s, %s)" %(str(row[0]), str(row[1]), str(row[2])))
# Cleanup
conn.commit()
cursor.close()
conn.close()
Lorsque le code est exécuté correctement, il produit le résultat suivant :
Connection established
Data row = (1, banana, 150)
Data row = (2, orange, 154)
Data row = (3, apple, 100)
Mettre à jour des données
L’exemple de code suivant se connecte à votre base de données serveur flexible Azure Database pour PostgreSQL et utilise cursor.execute avec l’instruction SQL UPDATE pour mettre à jour les données.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Update a data row in the table
cursor.execute("UPDATE inventory SET quantity = %s WHERE name = %s;", (200, "banana"))
print("Updated 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
Supprimer des données
L’exemple de code suivant se connecte à votre base de données serveur flexible Azure Database pour PostgreSQL et utilise cursor.execute avec l’instruction SQL DELETE pour supprimer un élément d’inventaire que vous avez inséré précédemment.
import psycopg
from get_conn import get_connection_uri
conn_string = get_connection_uri()
conn = psycopg.connect(conn_string)
print("Connection established")
cursor = conn.cursor()
# Delete data row from table
cursor.execute("DELETE FROM inventory WHERE name = %s;", ("orange",))
print("Deleted 1 row of data")
# Cleanup
conn.commit()
cursor.close()
conn.close()
Contenu connexe
- Démarrage rapide : Utiliser Java et JDBC avec Azure Database pour PostgreSQL
- Démarrage rapide : Utiliser .NET (C#) pour se connecter et interroger des données dans Azure Database pour PostgreSQL
- Démarrage rapide : Utiliser le langage Go pour connecter et interroger des données dans Azure Database pour PostgreSQL
- Démarrage rapide : Utiliser PHP pour connecter et interroger des données dans Azure Database pour PostgreSQL
- Démarrage rapide : Se connecter et interroger avec Azure CLI avec Azure Database pour PostgreSQL
- Démarrage rapide : Importer des données à partir d’Azure Database pour PostgreSQL dans Power BI