SQLite - Python

Installation

SQLite3 peut être intégré à Python à l'aide du module sqlite3. Le module sqlite3 a été écrit par Gerhard Haring. Il fournit une interface SQL compatible avec la spécification DB-API 2.0 décrite dans la PEP 249. Vous n'avez pas besoin d'installer ce module séparément, car Python 2.5.x et versions ultérieures incluent ce module par défaut.

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

API du module sqlite3 de Python

Voici les routines importantes du module sqlite3 qui peuvent répondre à vos besoins d'utilisation des bases de données SQLite dans vos programmes Python. Si vous avez besoin de plus de détails, veuillez consulter la documentation officielle du module sqlite3 de Python.

Non.API et description
1sqlite3.connect(database [,timeout ,other optional arguments])

Cette API ouvre une connexion au fichier de base de données SQLite database. Vous pouvez utiliser ":memory:" pour ouvrir une connexion à la base de données en RAM au lieu de l'ouvrir sur disque. Si la base de données est ouverte avec succès, un objet de connexion est renvoyé.

Lorsqu'une base de données est accédée par plusieurs connexions, et que l'une d'elles modifie la base de données, la base de données SQLite est verrouillée jusqu'à ce que la transaction soit validée. Le paramètre timeout indique combien de temps la connexion attend le verrou, jusqu'à ce qu'une exception se produise et que la connexion soit déconnectée. Le paramètre timeout a une valeur par défaut de 5.0 (5 secondes).

Si le nom de base de données filename donné n'existe pas, cet appel créera une base de données. Si vous ne voulez pas créer la base de données dans le répertoire courant, vous pouvez spécifier un nom de fichier avec un chemin, afin de pouvoir créer la base de données n'importe où.

2connection.cursor([cursorClass])

Cette routine crée uncurseur, qui sera utilisé dans la programmation de bases de données Python. Cette méthode accepte un seul paramètre facultatif cursorClass. Si ce paramètre est fourni, il doit être une classe de curseur personnalisée dérivée de sqlite3.Cursor.

3cursor.execute(sql [, paramètres facultatifs])

Cette routine exécute une instruction SQL. L'instruction SQL peut être paramétrée (c.-à-d. en utilisant des marqueurs de substitution au lieu du texte SQL). Le module sqlite3 prend en charge deux types de marqueurs de substitution : les points d'interrogation et les marqueurs nommés (style nommé).

Exemple : cursor.execute("insert into people values (?, ?)", (who, age))

4connection.execute(sql [, paramètres facultatifs])

Cette routine est un raccourci pour la méthode fournie par l'objet curseur décrit ci-dessus. Elle crée un objet curseur intermédiaire en appelant la méthode cursor(), puis appelle la méthode execute du curseur avec les paramètres donnés.

5cursor.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 seq_of_parameters.

6connection.executemany(sql[, paramètres])

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 du curseur avec les paramètres donnés.

7cursor.executescript(sql_script)

Cette routine exécute plusieurs instructions SQL dès qu'elle reçoit un script. Elle exécute d'abord une instruction COMMIT, puis exécute le script SQL transmis en paramètre. Toutes les instructions SQL doivent utiliser des points-virgules;pour la séparation.

8connection.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.

9connection.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.

10connection.commit()

Cette méthode valide la transaction en cours. Si vous n'appelez pas cette méthode, toutes les actions effectuées depuis votre dernier appel à commit() ne seront pas visibles pour les autres connexions à la base de données.

11connection.rollback()

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

12connection.close()

Cette méthode ferme la connexion à la base de données. Notez que cela n'appelle pas automatiquement commit(). Si vous fermez la connexion à la base de données sans avoir préalablement appelé la méthode commit(), toutes les modifications que vous avez apportées seront perdues !

13cursor.fetchone()

Cette méthode récupère la ligne suivante dans l'ensemble de résultats de la requête, renvoie une séquence unique, et renvoie None lorsqu'il n'y a plus de données disponibles.

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

Cette méthode récupère le groupe suivant de lignes dans l'ensemble de résultats de la requête, en renvoyant une liste. Lorsqu'il n'y a plus de lignes disponibles, elle renvoie une liste vide. Cette méthode tente de récupérer autant de lignes que spécifié par le paramètre size.

15cursor.fetchall()

Cette routine récupère toutes les lignes (restantes) de l'ensemble de résultats de la requête, en renvoyant une liste. Lorsqu'aucune ligne n'est disponible, elle renvoie une liste vide.

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 enfin un objet de base de données sera renvoyé.

Exemple

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')

print (Base de données ouverte avec succès)

Ici, vous pouvez également définir le nom de la base de données sur un nom spécifique:memory:, ce qui créera une base de données en RAM. Maintenant, exécutons le programme ci-dessus pour créer notre base de données dans le répertoire couranttest.db. Vous pouvez modifier le chemin selon vos besoins. Enregistrez 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, le message ci-dessous s'affichera :

$chmod +x sqlite.py
$./sqlite.py
Open database successfully

Créer une table

L'extrait de code Python suivant sera utilisé pour créer une table dans la base de données créée précédemment :

Exemple

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
print (Base de données ouverte avec succès)
c = conn.cursor()
c.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 créée avec succès)
conn.commit()
conn.close()

Lorsque le programme ci-dessus est exécuté, il va créer la table COMPANY danstest.dbet afficher le message présenté ci-dessous :

Database opened successfully
Table created successfully

Opération INSERT

Le programme Python suivant montre comment créer des enregistrements dans la table COMPANY créée ci-dessus :

Exemple

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Base de données ouverte avec succès)

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

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

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

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

conn.commit()
print (Données insérées avec succès)
conn.close()

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

Database opened successfully Data inserted successfully

SELECT Operation

The following Python program shows how to fetch and display records from the COMPANY table created earlier:

#!/usr/bin/python

Example

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Database opened successfully)

cursor = c.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 (Data operation successful)
conn.close()

When the above program is executed, it will produce the following result:

数据库打开成功
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

数据操作成功

UPDATE Operation

The following Python code shows how to use the UPDATE statement to update any record, and then fetch and display the updated records from the COMPANY table:

Example

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Database opened successfully)

c.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 (Data operation successful)
conn.close()

When the above program is executed, it will produce the following result:

数据库打开成功
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

数据操作成功

DELETE Operation

The following Python code shows how to use the DELETE statement to delete any record, and then fetch and display the remaining records from the COMPANY table:

Example

#!/usr/bin/python

import sqlite3

conn = sqlite3.connect('test.db')
c = conn.cursor()
print (Database opened successfully)

c.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 (Data operation successful)
conn.close()

When the above program is executed, it will produce the following result:

数据库打开成功
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

数据操作成功
Other Extensions