MPSI 831, PCSI 833 Lycée Masséna
fonction desciption
f=open(nom_du_fichier,'r')Ouvre le fichier nom_de_fichier (donné sous la forme d’une chaîne de caractères
indiquant son emplacement) en lecture (rcomme read). Le fichier doit exister et
seule la lecture est autorisée.
f=open(nom_du_fichier,'w')Ouvre le fichier nom_de_fichier en écriture (wcomme write). Si le fichier n’existe
pas, il est créé, sinon il est écrasé (vidé avant utilisation).
f=open(nom_du_fichier,'a')Ouvre le fichier nom_de_fichier en ajout (acomme append). Identique au mode 'w',
sauf que si le fichier existe, il n’est pas écrasé et ce qu’on écrit est ajouté à partir de
la fin du fichier.
f.close() Sur un fichier ouvert comme précédemment, le ferme. Cette ligne est impérative pour
les fichiers ouverts en écriture, puisque le fichier n’est réellement écrit complètement
qu’à la fermeture.
f.readlines() Lit tout le fichier et stocke le résultat dans une liste de chaînes de caractères, chaque
élément correspondant à une ligne. Attention, le saut de ligne \n est présent à la fin
de chaque chaîne.
f.write(s) Écrit la chaîne sà la suite du fichier.
f.writelines(T) Écrit l’ensemble des éléments de Tdans le fichier fcomme des lignes successives. T
est une liste, une séquence, un tuple... bref, un itérable.
4 Création d’une base de données à une seule table (à partir d’un fichier)
Nous allons voir dans cette section comment créer une base de données, et insérer des valeurs dedans. Fermez la
table communes_francaises.
Voici un exemple de script pour demander la création d’une nouvelle table, qui est sensée gérer les membres d’une
association (le code est téléchargeable comme exemple_code.py) :
conn=sql.connect("assoc.sqlite")
cur=conn.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS membres (id INTEGER PRIMARY KEY AUTOINCREMENT, age INTEGER,
nom TEXT, taille REAL)")
cur.execute("INSERT INTO membres(age,nom,taille) VALUES(21,'DUPOND',1.83)")
cur.execute("INSERT INTO membres(age,nom,taille) VALUES(15,'DURAND',1.57)")
cur.execute("INSERT INTO membres(age,nom,taille) VALUES(18,'DUGOMMIER',1.69)")
conn.commit()
cur.close()
conn.close()
Quelques explications :
— On crée une table « membres » à 4 attributs. Notez le champ « id » de type nombre entier qui sert de clef
primaire : ceci est spécifié, et ce champ est auto-incrémenté, ce qui signifie que lorsqu’on rentre de nouveaux
membres dans la base, on n’a pas à préciser nous-même le champ id.
— Le "IF NOT EXISTS" est optionnel mais conseillé car il évite un message d’erreur au cas ou la TABLE existe
déjà.
— Dans la rédaction, on fait suivre CREATE TABLE du nom de la table, puis entre parenthèses les noms de chaque
champs suivi du type de données et séparés par des virgules.
— L’insertion de membres dans la base se fait de lui-même, à l’aide de INSERT INTO. L’exemple parle de lui-même.
— Après l’insertion, les enregistrements sont dans le tampon du curseur, mais ils n’ont pas encore été transférés
véritablement dans la base de données. On pourrait donc tout annuler si nécessaire. Le transfert dans la base de
données est déclenché par la méthode commit() de l’objet conn.
— On peut refermer le curseur et la connexion ensuite.
Question 8. Récupérez le fichier membres_associations.txt et insérez les nouvelles entrées dans la base à partir
d’un script Python (en vrai c’est la liste des PC, avec des ages et tailles choisis au hasard). Vous pouvez laisser
Dupont, Durand, Dugommier. On rappelle que s.split(',')permet de séparer une chaîne de caractères sautour
du caractère ,: une liste est renvoyée.
Question 9. Une fois la base créée, récupérer les informations suivantes :
Svartz Page 5/6 2015/2016