VERSION FINALE
1
# TD_03_A3_version_finale.py2
import sqlite3
3
import os
4
import subprocess
5
# Chemin du fichier de base de données6
db_file = 'TD_03_A1.db'
7
8
def supprimer_db(fichier):
9
"""Supprime le fichier de base de données s'il existe."""10
if os.path.exists(fichier):
11
os.remove(fichier)
12
print(f"Fichier de base de données '{fichier}' supprimé.")
13
14
def creer_connexion(fichier):
15
"""Crée une connexion à la base de données SQLite."""16
conn = sqlite3.connect(fichier)
17
return conn
18
19
def creer_table(conn):
20
"""Crée la table competences dans la base de données."""21
cur = conn.cursor()
22
cur.execute('''
23
CREATE TABLE IF NOT EXISTS competences (24
id INTEGER PRIMARY KEY AUTOINCREMENT,25
code TEXT NOT NULL,26
name TEXT NOT NULL,27
validation TEXT NOT NULL28
)29
''')30
cur.close()
31
print("Table 'competences' créée.")
32
33
def inserer_competences(conn, competences_data):
34
"""Insère plusieurs compétences dans la table competences."""35
cur = conn.cursor()
36
cur.executemany('''
37
INSERT INTO competences (code, name, validation) 38
VALUES (?, ?, ?)39
''', competences_data)
40
conn.commit()
41
cur.close()
42
print("Compétences insérées avec succès.")
43
44
def main():
45
"""Fonction principale pour gérer le flux de l'application."""46
# Supprimer la base de données existante47
supprimer_db(db_file)
48
49
# Créer une nouvelle connexion à la base de données50
conn = creer_connexion(db_file)
51
52
# Créer la table competences53
creer_table(conn)
54
55
# Liste des compétences à insérer56
competences_data = [
57
('MAI', 'MAINTENIR', 'NON EVALUE'),
58
('AME', 'AMELIORER', 'NON EVALUE'),
59
]
60
61
# Insérer les compétences62
inserer_competences(conn, competences_data)
63
64
# Fermeture de la connexion65
conn.close()
66
print("Connexion à la base de données fermée.")
67
db_browser_path = r"C:\Program Files (x86)\DB Browser for SQLite\DB Browser for SQLite.exe"
68
69
subprocess.run([db_browser_path, db_file], check=True)
70
# Exécuter le script71
if __name__ == "__main__":
72
main()73
Remarque : Choix des modules/classe/interfaces⚓
Au même titre que nous intégrons dans le code des modules importés (ou des bibliothèques en C++), il est nécessaire d'organiser les procédures avec des modules séparés pour clarifier le code, et séparer les procédures liées par exemple à la gestion/contrôle des fichiers et la gestion de chaque table (compétences, promotions, etc ...). Il sera nécessaire d'introduire notamment la notion de classes pour gérer la base de données et l'ensemble des tables, puis de créer un liant par des classes d'interface pour rendre le code indépendant de l'évolutions des technologies employées.
Dans notre exemple, de plus, nous avons traité une table sans se préoccuper d'une interface utilisateur pour la saisie des données
Exemple : Une possible version finale⚓
1
# TD_03_A3_version_finale.py2
import sqlite3
3
import os
4
import subprocess
5
# Chemin du fichier de base de données6
db_file = 'TD_03_A1.db'
7
8
def supprimer_db(fichier):
9
"""Supprime le fichier de base de données s'il existe."""10
if os.path.exists(fichier):
11
os.remove(fichier)
12
print(f"Fichier de base de données '{fichier}' supprimé.")
13
14
def creer_connexion(fichier):
15
"""Crée une connexion à la base de données SQLite."""16
conn = sqlite3.connect(fichier)
17
return conn
18
19
def creer_table(conn):
20
"""Crée la table competences dans la base de données."""21
cur = conn.cursor()
22
cur.execute('''
23
CREATE TABLE IF NOT EXISTS competences (24
id INTEGER PRIMARY KEY AUTOINCREMENT,25
code TEXT NOT NULL,26
name TEXT NOT NULL,27
validation TEXT NOT NULL28
)29
''')30
cur.close()
31
print("Table 'competences' créée.")
32
33
def inserer_competences(conn, competences_data):
34
"""Insère plusieurs compétences dans la table competences."""35
cur = conn.cursor()
36
cur.executemany('''
37
INSERT INTO competences (code, name, validation) 38
VALUES (?, ?, ?)39
''', competences_data)
40
conn.commit()
41
cur.close()
42
print("Compétences insérées avec succès.")
43
44
def main():
45
"""Fonction principale pour gérer le flux de l'application."""46
# Supprimer la base de données existante47
supprimer_db(db_file)
48
49
# Créer une nouvelle connexion à la base de données50
conn = creer_connexion(db_file)
51
52
# Créer la table competences53
creer_table(conn)
54
55
# Liste des compétences à insérer56
competences_data = [
57
('MAI', 'MAINTENIR', 'NON EVALUE'),
58
('AME', 'AMELIORER', 'NON EVALUE'),
59
]
60
61
# Insérer les compétences62
inserer_competences(conn, competences_data)
63
64
# Fermeture de la connexion65
conn.close()
66
print("Connexion à la base de données fermée.")
67
db_browser_path = r"C:\Program Files (x86)\DB Browser for SQLite\DB Browser for SQLite.exe"
68
69
subprocess.run([db_browser_path, db_file], check=True)
70
# Exécuter le script71
if __name__ == "__main__":
72
main()73