Python - Bases de données et SQL

Le langage de programmation Python possède de puissantes fonctionnalités pour la programmation de bases de données. Python prend en charge diverses bases de données comme SQLite, MySQL, Oracle, Sybase, PostgreSQL, etc. Python prend également en charge le langage de définition de données (DDL), le langage de manipulation de données (DML) et les instructions de requête de données. La norme Python pour les interfaces de base de données est l'API DB Python. La plupart des interfaces de base de données Python adhèrent à cette norme.

Voici la liste des interfaces de base de données Python disponibles: Interfaces de base de données Python et API . Vous devez télécharger un module DB API distinct pour chaque base de données à laquelle vous devez accéder.

Dans ce chapitre, nous verrons l'utilisation de la base de données SQLite dans le langage de programmation python. Cela se fait en utilisant le module sqlite3 intégré de python. Vous devez d'abord créer un objet de connexion qui représente la base de données, puis créer des objets curseur pour exécuter des instructions SQL.

Se connecter à 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 sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";

Ici, vous pouvez également fournir le nom de la base de données comme nom spécial :memory:pour créer une base de données en RAM. Maintenant, exécutons le programme ci-dessus pour créer notre base de donnéestest.dbdans le répertoire courant. Vous pouvez changer votre chemin selon vos besoins. Conservez le code ci-dessus dans le fichier sqlite.py et exécutez-le comme indiqué ci-dessous. Si la base de données est créée avec succès, elle affichera le message suivant.

$chmod +x sqlite.py $./sqlite.py
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 sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.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.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

Insérer une opération

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

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (1, 'Paul', 32, 'California', 20000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");
conn.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");
conn.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 ci-dessus est exécuté, il créera les enregistrements donnés dans la table COMPANY et affichera les deux lignes suivantes -

Opened database successfully
Records created successfully

Sélectionnez l'opération

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

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   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 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 de mise à jour

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

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1")
conn.commit
print "Total number of rows updated :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   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 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

Supprimer l'opération

Le code Python suivant montre comment utiliser l'instruction DELETE pour supprimer n'importe quel enregistrement, puis extraire et afficher les enregistrements restants de la table COMPANY.

#!/usr/bin/python
import sqlite3
conn = sqlite3.connect('test.db')
print "Opened database successfully";
conn.execute("DELETE from COMPANY where ID = 2;")
conn.commit()
print "Total number of rows deleted :", conn.total_changes
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
   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 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