PostgreSQL - Interface Python

Installation

PostgreSQL peut être intégré à Python en utilisant le module psycopg2. sycopg2 est un adaptateur de base de données PostgreSQL pour le langage de programmation Python. psycopg2 a été écrit dans le but d'être très petit et rapide, et stable comme un rocher. Vous n'avez pas besoin d'installer ce module séparément car il est livré, par défaut, avec Python version 2.5.x et suivantes.

Si vous ne l'avez pas installé sur votre machine, vous pouvez utiliser la commande yum pour l'installer comme suit -

$yum install python-psycopg2

Pour utiliser le module psycopg2, vous devez d'abord créer un objet Connection qui représente la base de données, puis éventuellement vous pouvez créer un objet curseur qui vous aidera à exécuter toutes les instructions SQL.

API du module Python psycopg2

Voici les routines importantes du module psycopg2, qui peuvent suffire à votre besoin pour travailler avec la base de données PostgreSQL à partir de votre programme Python. Si vous recherchez une application plus sophistiquée, vous pouvez consulter la documentation officielle du module Python psycopg2.

S. Non. API et description
1

psycopg2.connect(database="testdb", user="postgres", password="cohondob", host="127.0.0.1", port="5432")

Cette API ouvre une connexion à la base de données PostgreSQL. Si la base de données est ouverte avec succès, elle renvoie un objet de connexion.

2

connection.cursor()

Cette routine crée un cursor qui sera utilisé tout au long de la programmation de votre base de données avec Python.

3

cursor.execute(sql [, optional parameters])

Cette routine exécute une instruction SQL. L'instruction SQL peut être paramétrée (c'est-à-dire, des espaces réservés au lieu de littéraux SQL). Le module psycopg2 prend en charge l'espace réservé à l'aide du signe% s

Par exemple: cursor.execute ("insérer dans les valeurs des personnes (% s,% s)", (qui, âge))

4

cursor.executemany(sql, seq_of_parameters)

Cette routine exécute une commande SQL sur toutes les séquences de paramètres ou mappages trouvés dans la séquence sql.

5

cursor.callproc(procname[, parameters])

Cette routine exécute une procédure de base de données stockée avec le nom donné. La séquence de paramètres doit contenir une entrée pour chaque argument attendu par la procédure.

6

cursor.rowcount

Cet attribut en lecture seule qui renvoie le nombre total de lignes de base de données qui ont été modifiées, insérées ou supprimées par la dernière exécution * ().

sept

connection.commit()

Cette méthode valide la transaction en cours. Si vous n'appelez pas cette méthode, tout ce que vous avez fait depuis le dernier appel à commit () n'est pas visible depuis les autres connexions à la base de données.

8

connection.rollback()

Cette méthode annule toutes les modifications apportées à la base de données depuis le dernier appel à commit ().

9

connection.close()

Cette méthode ferme la connexion à la base de données. Notez que cela n'appelle pas automatiquement commit (). Si vous fermez simplement votre connexion à la base de données sans appeler commit () au préalable, vos modifications seront perdues!

dix

cursor.fetchone()

Cette méthode récupère la ligne suivante d'un jeu de résultats de requête, renvoyant une seule séquence, ou None lorsque aucune donnée n'est disponible.

11

cursor.fetchmany([size=cursor.arraysize])

Cette routine récupère l'ensemble suivant de lignes d'un résultat de requête, renvoyant une liste. Une liste vide est renvoyée lorsqu'il n'y a plus de lignes disponibles. La méthode tente d'extraire autant de lignes que l'indique le paramètre size.

12

cursor.fetchall()

Cette routine récupère toutes les lignes (restantes) d'un résultat de requête, renvoyant une liste. Une liste vide est renvoyée lorsqu'aucune ligne n'est disponible.

Connexion à la base de données

Le code Python suivant montre comment se connecter à une base de données existante. Si la base de données n'existe pas, elle sera créée et finalement un objet de base de données sera renvoyé.

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")

print "Opened database successfully"

Ici, vous pouvez également fournir une base de données testdb comme nom et si la base de données est ouverte avec succès, alors il donnera le message suivant -

Open database successfully

Créer une table

Le programme Python suivant sera utilisé pour créer une table dans la base de données précédemment créée -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()
cur.execute('''CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);''')
print "Table created successfully"

conn.commit()
conn.close()

Lorsque le programme ci-dessus est exécuté, il créera la table COMPANY dans votre test.db et il affichera les messages suivants -

Opened database successfully
Table created successfully

Opération INSERT

Le programme Python suivant montre comment nous pouvons créer des enregistrements dans notre table COMPANY créée dans l'exemple ci-dessus -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

conn.commit()
print "Records created successfully";
conn.close()

Lorsque le programme donné ci-dessus est exécuté, il créera des enregistrements donnés dans la table COMPANY et affichera les deux lignes suivantes -

Opened database successfully
Records created successfully

Opération SELECT

Le programme Python suivant montre comment nous pouvons récupérer et afficher les enregistrements de notre table COMPANY créée dans l'exemple ci-dessus -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Lorsque le programme donné ci-dessus est exécuté, il produira le résultat suivant -

Opened database successfully
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

Opération UPDATE

Le code Python suivant montre comment nous pouvons utiliser l'instruction UPDATE pour mettre à jour n'importe quel enregistrement, puis récupérer et afficher les enregistrements mis à jour à partir de notre table COMPANY -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit()
print "Total number of rows updated :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Lorsque le programme donné ci-dessus est exécuté, il produira le résultat suivant -

Opened database successfully
Total number of rows updated : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  25000.0

ID =  2
NAME =  Allen
ADDRESS =  Texas
SALARY =  15000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully

Opération DELETE

Le code Python suivant montre comment nous pouvons utiliser l'instruction DELETE pour supprimer n'importe quel enregistrement, puis récupérer et afficher les enregistrements restants de notre table COMPANY -

#!/usr/bin/python

import psycopg2

conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432")
print "Opened database successfully"

cur = conn.cursor()

cur.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print "Total number of rows deleted :", cur.rowcount

cur.execute("SELECT id, name, address, salary  from COMPANY")
rows = cur.fetchall()
for row in rows:
   print "ID = ", row[0]
   print "NAME = ", row[1]
   print "ADDRESS = ", row[2]
   print "SALARY = ", row[3], "\n"

print "Operation done successfully";
conn.close()

Lorsque le programme donné ci-dessus est exécuté, il produira le résultat suivant -

Opened database successfully
Total number of rows deleted : 1
ID =  1
NAME =  Paul
ADDRESS =  California
SALARY =  20000.0

ID =  3
NAME =  Teddy
ADDRESS =  Norway
SALARY =  20000.0

ID =  4
NAME =  Mark
ADDRESS =  Rich-Mond
SALARY =  65000.0

Operation done successfully