VERSION FINALE
1
# TD_03_A3_version_finale.py
2
import sqlite3
3
import os
4
import subprocess
5
# Chemin du fichier de base de données
6
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 NULL
28
)
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 existante
47
supprimer_db(db_file)
48
49
# Créer une nouvelle connexion à la base de données
50
conn = creer_connexion(db_file)
51
52
# Créer la table competences
53
creer_table(conn)
54
55
# Liste des compétences à insérer
56
competences_data = [
57
('MAI', 'MAINTENIR', 'NON EVALUE'),
58
('AME', 'AMELIORER', 'NON EVALUE'),
59
]
60
61
# Insérer les compétences
62
inserer_competences(conn, competences_data)
63
64
# Fermeture de la connexion
65
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 script
71
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.py
2
import sqlite3
3
import os
4
import subprocess
5
# Chemin du fichier de base de données
6
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 NULL
28
)
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 existante
47
supprimer_db(db_file)
48
49
# Créer une nouvelle connexion à la base de données
50
conn = creer_connexion(db_file)
51
52
# Créer la table competences
53
creer_table(conn)
54
55
# Liste des compétences à insérer
56
competences_data = [
57
('MAI', 'MAINTENIR', 'NON EVALUE'),
58
('AME', 'AMELIORER', 'NON EVALUE'),
59
]
60
61
# Insérer les compétences
62
inserer_competences(conn, competences_data)
63
64
# Fermeture de la connexion
65
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 script
71
if __name__ == "__main__":
72
main()
73