Connexion à une base de données§
Référez vous à l'introduction de la documentation du module sqlite3,
dans la bibliothèque standard de Python :
Référez vous à l'introduction de la documentation du module sqlite3,
dans la bibliothèque standard de Python :
https://docs.python.org/fr/3.6/library/sqlite3.html
close§Note
Ce qui suit est valable pour de nombreux types d'objets ayant une méthode
close ou équivalente, pas uniquement pour les connexions à une base de données.
Il est important de fermer la connexion quoi qu'il arrive,
y compris si une exception est levée.
C'est pourquoi il faut normalement appeler la méthode close
dans la clause finally` d'un bloc ``try :
conn = sqlite3.connect('example.db')
try:
c = conn.cursor()
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
conn.commit()
finally:
conn.close()
Une autre manière consiste à utiliser la clause with de python,
et la fonction contextlib.closing qui garantira l'appel à close :
from contextlib import closing
with closing(sqlite3.connect('example.db')) as conn:
c = conn.cursor()
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
conn.commit()
Note
De plus en plus d'objets en Python supportent nativement la clause with ;
dans ce cas, il n'est pas nécessaire d'encapsuler l'appel avec closing(...).
C'est notamment le cas de l'objet retourné par sqlite3.connect.
On pourrait donc écrire encore plus simplement :
with sqlite3.connect('example.db') as conn:
c = conn.cursor()
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
conn.commit()
Cependant, la PEP 249 n'impose pas ce support de la clause with,
donc si on souhaite garantir la compatibilité avec d'autres types de bases de données,
il est préférable de garder l'appel explicite à closing(...).