base de données PostgreSQL avec Python

Comment se connecter à une base de données PostgreSQL avec Python

Partagez sur:

Cet article décrit comment se connecter à une base de données PostgreSQL avec Python.

Avant de pouvoir se connecter à une base données PostgreSQL avec Python, la base de données et l’utilisateur PostgreSQL doivent déjà exister avant de pouvoir utiliser ces méthodes.

Pour plus d’informations sur la gestion des bases de données PostgreSQL, veuillez consulter cet article.

 

Se connecter à une base de données PostgreSQL avec Python

Pour se connecter à une base de données PostgreSQL avec Python, vous devez installer un (ou plusieurs) des packages suivants dans un environnement virtuel:

  • psycopg2: ce package contient le module psycopg2,
  • PyGreSQL: ce package contient le module pgdb,

Ces deux packages prennent en charge l’API de base de données SQL portable de Python.

Cela signifie que si vous passez d’un module à un autre, vous pouvez réutiliser la quasi-totalité de votre code existant (l’exemple de code ci-dessous montre comment procéder).

Configuration de l’environnement virtuel Python et installation d’un package PostgreSQL

 

Pour configurer l’environnement virtuel Python et installer un package PostgreSQL, procédez comme suit:

1- Connectez-vous à votre compte en utilisant SSH,

2- Pour créer un environnement virtuel, saisissez les commandes suivantes :

cd ~ 
virtualenv sqlenv

Notes :

  • La commande virtualenv crée un environnement virtuel nommé sqlenv et les commandes suivantes de cette procédure supposent que l’environnement est nommé sqlenv. Vous pouvez utiliser n’importe quel nom d’environnement, mais assurez-vous de remplacer toutes les occurrences de sqlenv par votre propre nom d’environnement.
  • Si vous exécutez une autre version de Python (par exemple, vous avez configuré manuellement une version plus récente de Python pour votre compte comme décrit dans cet article), vous pouvez spécifier cette version pour l’environnement virtuel. Par exemple, pour installer une version configurée par l’utilisateur de Python 3.8 dans l’environnement virtuel, vous pouvez utiliser la commande suivante:

 

virtualenv -p /home/username/bin/python3.8 sqlenv

 

3- Pour activer l’environnement virtuel, tapez la commande suivante:

source sqlenv/bin/activate

4- Pour mettre à jour pip dans l’environnement virtuel, tapez la commande suivante:

pip install -U pip

5- Tapez la commande du package que vous souhaitez installer:

  • Pour installer le package psycopg2, tapez la commande suivante:
pip install psycopg2

 

  • Pour installer le package PyGreSQL, tapez la commande suivante:
pip install pygresql

 

Exemple de code utilisant l’API de base de données SQL portable de Python

Après avoir installé un package PostgreSQL dans l’environnement virtuel, vous êtes prêt à se connecter à une base de données PostgreSQL avec Python.

L’exemple de code Python suivant montre comment procéder, ainsi que la facilité de basculement entre les différentes implémentations de package SQL à l’aide de l’API de base de données SQL portable. L’exemple de code fonctionne avec Python 2.7 et Python 3.x.

Dans votre propre code, remplacez username par le nom d’utilisateur de la base de données PostgreSQL, le mot de passe par le mot de passe de l’utilisateur de la base de données et le nom de base par le nom de la base de données:

 

#!/usr/bin/python

from __future__ import print_function

hostname = 'localhost'
username = 'username'
password = 'password'
database = 'dbname'

# Simple routine to run a query on a database and print the results:
def doQuery( conn ) :
    cur = conn.cursor()

    cur.execute( "SELECT fname, lname FROM employee" )

    for firstname, lastname in cur.fetchall() :
        print( firstname, lastname )


print( "Using psycopg2:" )
import psycopg2
myConnection = psycopg2.connect( host=hostname, user=username, password=password, dbname=database )
doQuery( myConnection )
myConnection.close()

print( "Using PyGreSQL (pgdb):" )
import pgdb
myConnection = pgdb.connect( host=hostname, user=username, password=password, database=database )
doQuery( myConnection )
myConnection.close()

 

 

Cet exemple crée une série d’objets Connection qui ouvre la même base de données à l’aide de différents modules PostgreSQL.

Étant donné que ces deux modules utilisent l’interface API de base de données SQL portable, ils peuvent utiliser le code de la fonction doQuery() sans aucune modification.

Lorsqu’un objet Connection est associé à une base de données, vous pouvez créer un objet Cursor. L’objet Cursor vous permet d’exécuter la méthode execute (), qui à son tour vous permet d’exécuter des instructions SQL brutes (dans ce cas, une requête SELECT sur une table nommée employé).

Note :

Comme vous pouvez le voir, l’API de base de données SQL portable de Python permet de basculer très facilement entre les modules PostgreSQL dans votre code. Dans l’exemple ci-dessus, les seules modifications de code nécessaires pour utiliser un module différent concernent les instructions d’importation et de connexion.

 

Exemple de code utilisant le module pg hérité

Le package PyGreSQL comprend également un module pg hérité qu’on peur utiliser pour se connecter à une PostgreSQL avec Python.

Bien qu’il soit facile à utiliser, il n’implémente pas l’API de base de données SQL portable de Python.

L’exemple de code suivant montre comment utiliser le module pg pour se connecter à une base de données PostgreSQL avec Python. Remplacez le nom d’utilisateur par le nom d’utilisateur de la base de données PostgreSQL, le mot de passe par le mot de passe de l’utilisateur de la base de données et le nom de base par le nom de la base de données:

#!/usr/bin/python

from __future__ import print_function

import pg

conn = pg.DB( host="localhost", user="username", passwd="password", dbname="dbname" )

result = conn.query( "SELECT fname, lname FROM employee" )

for firstname, lastname in result.getresult() :
    print( firstname, lastname )

conn.close()

Cet exemple crée un objet Connection qui ouvre la base de données PostgreSQL à l’aide des paramètres spécifiés.

Une fois que vous avez un objet Connection associé à la base de données, vous pouvez interroger la base de données directement à l’aide d’instructions SQL brutes (dans ce cas, une requête SELECT sur une table nommée employé).

La méthode getresult() lit les données de résultat renvoyées par la requête.

Enfin, la méthode close () ferme la connexion à la base de données.

 

Conclusion

Dans ce tutoriel, vous avez appris comment se connecter à une base de données PostgreSQL avec Python

 


Partagez sur: