Recherche de site Web

Comment utiliser PostgreSQL en Python


Il existe aujourd’hui de nombreux types de bases de données. Nous avons des bases de données centralisées, des bases de données commerciales, des bases de données cloud, des bases de données distribuées, des bases de données d'utilisateurs finaux, des bases de données NoSQL, des bases de données relationnelles et bien plus encore.

Cet article se concentrera sur un exemple de base de données relationnelle (PostgreSQL) et comment interroger des données à partir de celui-ci. D'autres exemples de bases de données relationnelles incluent MySQL, MariaDB et SQLite.

Dans ce didacticiel, vous apprendrez à installer, connecter et enfin interroger une base de données PostgreSQL avec Python.

Pour commencer, commençons par en apprendre un peu plus sur PostgreSQL.

Qu’est-ce que PostgreSQL ?

L'une des bases de données relationnelles open source les plus connues est PostgreSQL. Il est utilisé par des développeurs et des entreprises de toutes tailles dans le monde entier.

En termes de popularité mondiale, PostgreSQL est classé quatrième par DB-Engines et sa popularité ne cesse de croître. Cela ne devrait pas surprendre, étant donné que de nombreuses applications Web et mobiles, ainsi que des outils analytiques, utilisent des bases de données PostgreSQL.

PostgreSQL dispose également d'un écosystème robuste avec une vaste sélection de modules complémentaires et d'extensions qui fonctionnent bien avec la base de données principale. Pour ces raisons, PostgreSQL est une option fantastique, que vous souhaitiez créer votre propre solution de base de données personnalisée ou que vous ayez besoin d'une base de données transactionnelle ou analytique.

Maintenant que vous savez ce qu'est PostgreSQL, voyons comment se connecter à la base de données à l'aide de Python.

Commencer

Nous devons utiliser une bibliothèque de connecteurs de base de données pour nous connecter à une instance de base de données PostgreSQL à partir de notre script Python. Nous pouvons choisir parmi une variété d’alternatives en Python, mais Psycopg2 est la plus connue et la plus utilisée.

Il existe des bibliothèques alternatives entièrement construites en Python, telles que pg8000 et py-postgresql, mais nous utiliserons ici Psycopg2.

Qu’est-ce que Psychog2 ?

La bibliothèque Psycopg2 utilise le langage de programmation C comme wrapper autour de la bibliothèque libpq PostgreSQL pour prendre en charge les normes Python DB API 2.0. L'implémentation C de Psycopg2 le rend incroyablement rapide et efficace.

À l'aide d'une requête SQL, nous pouvons utiliser Psycopg2 pour obtenir une ou plusieurs lignes de la base de données. Avec cette bibliothèque, nous pouvons également insérer des données dans la base de données en utilisant diverses méthodes d'insertion uniques ou par lots.

La bibliothèque est comme SQL (Structured Query Language) et effectue toutes les tâches et opérations qu’un langage de requête peut effectuer. Il est à la fois compatible avec Unicode et Python 3, et dispose également d'une sécurité des threads (la même connexion est partagée par plusieurs threads).

Il est conçu pour exécuter des programmes hautement multithread, qui produisent et suppriment fréquemment de nombreux curseurs et effectuent de nombreuses INSERTS ou MISES À JOUR simultanées. Les fonctionnalités de Psycopg2 incluent des curseurs côté client et côté serveur, une communication asynchrone et des notifications.

Comment installer Psycopg2

Il faut d'abord installer Psycopg2 pour pouvoir l'utiliser. Nous pouvons l'installer via le terminal ou l'invite de commande en utilisant pip.

#installation

pip install psycopg2
pip3 install psycopg2

Si nous décidons également d'installer la bibliothèque de connecteurs dans un environnement virtuel, vous pouvez le faire en utilisant ce code :

virtualenv env && source env/bin/activate
pip install psycopg2-binary

La bibliothèque Psycopg2 et toutes ses dépendances seront installées dans notre environnement virtuel Python avec cet extrait de code.

Nous avons installé notre connecteur, commençons donc à saisir quelques requêtes.

Comment interroger PostgreSQL à l'aide de Python

Tout d’abord, vous devrez créer un nouveau fichier et le nommer comme vous le souhaitez. Ensuite, ouvrez-le dans votre IDE et commencez à écrire le code.

La première chose à faire est d’importer la bibliothèque (c’est très important). Nous utiliserons deux objets Psycogp2 :

  • Objet de connexion : La connexion à une instance de base de données PostgreSQL est gérée par l'objet de connexion. Il encapsule une session de base de données, créée à l'aide de la fonction connect().
  • Objet curseur : l'objet curseur permet aux scripts Python d'exécuter des commandes PostgreSQL au sein d'une session de base de données. La connexion génère des curseurs, puis la méthode cursor() les lie définitivement à la connexion. Toutes les commandes sont exécutées dans le cadre de la session de base de données fermée par connexion.
import psycopg2

conn = psycopg2.connect(database="db_name",
                        host="db_host",
                        user="db_user",
                        password="db_pass",
                        port="db_port")

Nous devons spécifier ces arguments pour pouvoir nous connecter à la base de données. Jetons un coup d'œil rapide à ces arguments.

  • base de données : le nom de la base de données à laquelle nous souhaitons accéder ou à laquelle nous souhaitons nous connecter. Notez que nous ne pouvons nous connecter qu'à une seule base de données avec un seul objet de connexion.
  • hôte : il s'agit très probablement de l'adresse IP ou de l'URL du serveur de base de données.
  • utilisateur : comme son nom l'indique, il s'agit du nom de l'utilisateur PostgreSQL.
  • mot de passe : il s'agit du mot de passe qui correspond à l'utilisateur PostgreSQL.
  • port : le numéro de port du serveur PostgreSQL sur localhost – il est généralement 5432.

Si nos informations d'identification de base de données ont été saisies correctement, nous recevrons un objet de connexion à la base de données en direct que nous pourrons utiliser pour créer un objet curseur. Nous pouvons continuer et exécuter n'importe quelle requête de base de données et récupérer des données à l'aide d'un objet curseur.

cursor = conn.cursor()

Écrivons une requête simple :

cursor.execute("SELECT * FROM DB_table WHERE id = 1")

Nous appliquons la fonction execute() et fournissons une chaîne de requête comme paramètre. Ensuite, la base de données sera interrogée à l'aide de la requête que nous avons saisie.

Après avoir réussi cela, afin de pouvoir récupérer les données de la base de données à l'aide de Pyscopg2, nous devons utiliser l'une de ces fonctions : fetchone() fetchall() , ou fetchmany().

Comment utiliser fetchone() :

Après avoir exécuté la requête SQL, cette fonction ne renverra que la première ligne. C'est la méthode la plus simple pour extraire des données d'une base de données.

#code
print(cursor.fetchone())

#output
(1, 'A-CLASS', '2018', 'Subcompact executive hatchback')

La fonction fetchone() renvoie une seule ligne sous la forme d'un tuple, avec les informations disposées dans l'ordre spécifié par les colonnes fournies par la requête.

Lors de la construction de la chaîne de requête, il est crucial de fournir précisément l’ordre des colonnes afin de distinguer quelles données du tuple appartiennent à quelles données.

Comment utiliser fetchall() :

La fonction fetchall() fonctionne de la même manière que fetchone() sauf qu'elle renvoie non pas une seule ligne mais toutes les lignes. Donc, si nous voulons 20 à 200 lignes ou plus, nous utilisons Psycopg2 fetchall().

#code
print(cursor.fetchall())

#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
 (2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
 (3, 'CLA', '2019', 'Subcompact executive fastback sedan'),
 (4, 'CLS', '2018', 'E-segment/executive fastback sedan'),
 (5, 'E-CLASS', '2017', 'E-segment/executive sedan'),
 (6, 'EQE', '2022', 'All-electric E-segment fastback'),
 (7, 'EQS', '2021', 'All-electric full-size luxury liftback'),
 (8, 'S-CLASS', '2020', 'F-segment/full-size luxury sedan.'),
 (9, 'G-CLASS', '2018', 'Mid-size luxury SUV, known as the G-Wagen'),
 (10, 'GLE', '2019', 'Mid-size luxury crossover SUV')]
[...]

Comment utiliser fetchmany() :

La fonction fetchmany() nous permet d'extraire un certain nombre d'enregistrements de la base de données et nous donne un contrôle supplémentaire sur le nombre précis de lignes que nous obtenons.

#code
print(cursor.fetchmany(size=3))

#output
[(1, 'A-CLASS', '2018', 'Subcompact executive hatchback'),
 (2, 'C-CLASS', '2021', 'D-segment/compact executive sedan'),
 (3, 'CLA', '2019', 'Subcompact executive fastback sedan')]

Parce que nous avons défini l'argument sur 3, nous n'avons reçu que trois lignes.

Lorsque nous avons fini d'interroger notre base de données, nous devons fermer la connexion avec conn.close().

Conclusion

C'était assez facile, non ? Nous avons pu effectuer toutes ces tâches à partir d’un seul script Python et cela a très bien fonctionné.

J'espère que cet article vous a été utile et que vous pouvez désormais travailler avec PostgreSQL en utilisant Python.

Pour plus d'informations, consultez la documentation Psycopg2 pour en savoir plus.

Articles connexes