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(...)
.