Decouvrons Sqlite - 2

| Comments

Comme nous l’avons vu dans le premier article, nous savons maintenant créer une table, insérer des données et les visualiser.

Oui, mais là, vous allez dire “Tonton, tu nous arnaques, on avait dit depuis Python”.
Ok, mais il fallait bien voir comment le faire depuis Sqlite, promis ça vous servira.

Pour interagir avec Sqlite depuis Python, il faut le module sqlite3.
Heureusement, ce module est inclus dans la distribution de Python depuis la version 2.5.
Pour vérifier la présence du module, lancez Python en ligne de commande et faites juste un import sqlite3. Si vous avez un message d’erreur comme celui ci dessous, faites moi un email pour que je vous aide.

1
2
3
4
>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named sqlite3

Avec ce module, nous allons pouvoir nous connecter à notre base :

1
2
>>> import sqlite3
>>> conn =sqlite3.connect("tonton.db")

La fonction connect prend pour paramètre le nom du fichier de la base.
Si vous le souhaitez, vous pouvez indiquer un chemin complet comme par exemple :

1
2
>>> import sqlite3
>>> conn =sqlite3.connect("/home/tonton/projects/tontoncodeur/tonton.db")

Ou si vous utilisez Windows :

1
2
>>> import sqlite3
>>> conn =sqlite3.connect("C:/projects/tontoncodeur/tonton.db")

Il faut ensuite créer l’objet qui nous servira à effectuer nos opérations sur la base Sqlite :

1
2
3
>>> import sqlite3
>>> conn =sqlite3.connect("tonton.db") 
>>> cur =conn.cursor()

Nous pouvons alors vérifier le contenu de notre table.
Le principe est simple, nous demandons à l’objet cursor d’exécuter notre commande SQL :

1
2
3
4
5
6
7
8
>>> import sqlite3
>>> conn =sqlite3.connect("tonton.db") 
>>> cur =conn.cursor()
>>> cur.execute("SELECT * FROM PERSONNES")
<sqlite3.Cursor object at 0x7f41dce2e6c0>
>>> data = cur.fetchone()
>>> print data
(1, u'Bob', 32)

La commande fetchone() nous a permis de récupérer le premier enregistrement de notre table.
Mais comment faire losqu’il y a plusieurs enregistrements ?

Pour le savoir, commençons par insérer d’autres enregistrements :

1
2
3
4
>>> import sqlite3
>>> conn =sqlite3.connect("tonton.db") 
>>> cur =conn.cursor()
>>> cur.execute("SELECT * FROM PERSONNES")

Nous pouvons alors vérifier le contenu de la table en utilisant une nouvelle fonction fetchall().
Elle nous retournera le tuple de tous les enregistrements.

1
2
3
4
5
6
>>> import sqlite3
>>> conn =sqlite3.connect("tonton.db") 
>>> cur =conn.cursor()
>>> cur.execute("SELECT * FROM PERSONNES")
>>> cur.fetchall()
[(1, u'Bob', 32), (2, u'Fanta', 33), (3, u'Titi', 43)]

Pourquoi ne pas profiter alors de Python pour insérer plusieurs lignes de manière plus programmée ?
Allons y :

1
2
3
4
5
6
7
8
9
10
11
>>> import sqlite3
>>> conn =sqlite3.connect("tonton.db") 
>>> cur =conn.cursor()
>>> donnees = [(4, 'Nono', 11), (5, 'Tom', 11), (6, 'Rosa', 14)]
>>> for ligne in donnees:
...     cur.execute("INSERT INTO PERSONNES(ID, NOM, AGE) VALUES(?,?,?)", ligne)
... 
<sqlite3.Cursor object at 0x7f41dce2e6c0>
<sqlite3.Cursor object at 0x7f41dce2e6c0>
<sqlite3.Cursor object at 0x7f41dce2e6c0>
>>> conn.commit()

Nous avons donc parcouru la variable donnees et inséré dans la table PERSONNES en utilisant les caractères ? dans la partie VALUES de notre commande.
Ces points d’interrogation sont remplacés par les valeurs fournies par la variable ligne.
Pour finir, nous appelons la fonction commit() qui indique que nous désirons bien sauvegarder tous ces changements.

Tout ça est assez simple non ?

Par ailleurs, si programmer en Python vous intéresse et que vous êtes au collège, je connais un jeune padawan avec qui vous pourriez échanger.

Comme toujours, n’hésitez pas à me contacter pour toute question ou souci que vous auriez.

Comments