SQLite - Python

Dans ce chapitre, vous apprendrez à utiliser SQLite dans les programmes Python.

Installation

SQLite3 peut être intégré à Python à l'aide du module sqlite3, qui a été écrit par Gerhard Haring. Il fournit une interface SQL conforme à la spécification DB-API 2.0 décrite par PEP 249. 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.

Pour utiliser le module sqlite3, vous devez d'abord créer un objet de connexion 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 sqlite3

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

N ° Sr. API et description
1

sqlite3.connect(database [,timeout ,other optional arguments])

Cette API ouvre une connexion au fichier de base de données SQLite. Vous pouvez utiliser ": memory:" pour ouvrir une connexion de base de données à une base de données qui réside dans la RAM plutôt que sur le disque. Si la base de données est ouverte avec succès, elle renvoie un objet de connexion.

Lorsqu'une base de données est accédée par plusieurs connexions et que l'un des processus modifie la base de données, la base de données SQLite est verrouillée jusqu'à ce que cette transaction soit validée. Le paramètre timeout spécifie la durée pendant laquelle la connexion doit attendre que le verrou disparaisse avant de déclencher une exception. La valeur par défaut du paramètre de délai d'expiration est 5,0 (cinq secondes).

Si le nom de base de données donné n'existe pas, cet appel créera la base de données. Vous pouvez également spécifier le nom de fichier avec le chemin requis si vous souhaitez créer une base de données ailleurs que dans le répertoire actuel.

2

connection.cursor([cursorClass])

Cette routine crée un cursorqui sera utilisé tout au long de la programmation de votre base de données avec Python. Cette méthode accepte un seul paramètre facultatif cursorClass. S'il est fourni, il doit s'agir d'une classe de curseur personnalisée qui étend sqlite3.Cursor.

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 sqlite3 prend en charge deux types d'espaces réservés: les points d'interrogation et les espaces réservés nommés (style nommé).

For example - cursor.execute ("insérer dans les valeurs des personnes (?,?)", (Qui, âge))

4

connection.execute(sql [, optional parameters])

Cette routine est un raccourci de la méthode d'exécution ci-dessus fournie par l'objet curseur et elle crée un objet curseur intermédiaire en appelant la méthode curseur, puis appelle la méthode d'exécution du curseur avec les paramètres donnés.

5

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.

6

connection.executemany(sql[, parameters])

Cette routine est un raccourci qui crée un objet curseur intermédiaire en appelant la méthode cursor, puis appelle la méthode executemany cursor.s avec les paramètres donnés.

sept

cursor.executescript(sql_script)

Cette routine exécute plusieurs instructions SQL à la fois fournies sous forme de script. Il émet d'abord une instruction COMMIT, puis exécute le script SQL qu'il obtient en tant que paramètre. Toutes les instructions SQL doivent être séparées par un point-virgule (;).

8

connection.executescript(sql_script)

Cette routine est un raccourci qui crée un objet curseur intermédiaire en appelant la méthode cursor, puis appelle la méthode executescript du curseur avec les paramètres donnés.

9

connection.total_changes()

Cette routine renvoie le nombre total de lignes de base de données qui ont été modifiées, insérées ou supprimées depuis l'ouverture de la connexion à la base de données.

dix

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.

11

connection.rollback()

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

12

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!

13

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.

14

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.

15

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.

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

Opération INSERT

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

Opération SELECT

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 UPDATE

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

Opération DELETE

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