1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| #!/usr/bin/env python
import sqlite3
import random
requete = """
CREATE TABLE Ordres (
T_Ext INTEGER,
T_Amb INTEGER,
Prog INTEGER,
Heure INTEGER,
Etat INTEGER,
Ordre INTEGER,
calcul INT GENERATED ALWAYS AS (CASE Ordre WHEN 0 THEN "0" WHEN 2 THEN "?" ELSE "x" END) VIRTUAL
);
"""
"""
utiliser ALTER TABLE ADD COLUMN si table existe déjà pour ajouter la colonne "calcul"
"""
con = sqlite3.connect(":memory:")
cur = con.cursor()
cur.execute(requete)
for _ in range(12):
cur.execute(
"INSERT INTO Ordres VALUES(?,?,?,?,?,?);",
(
random.randint(0,3),
random.randint(0,3),
random.randint(0,2),
random.randint(0,2),
random.randint(0,1),
random.randint(0,1),
)
)
print("Add colonne 'calcul' calculée par la structure")
cur.execute("SELECT * FROM Ordres")
for item in cur.fetchall():
print(*item)
print("-"*12,"\nAdd colonne 'x' de plus mais par select")
print("-"*12)
cur.execute("""
SELECT *,IIF(Ordre == 1, 'Oui', 'Non') as x
FROM Ordres
WHERE T_Ext < 3 AND T_Amb < 3
ORDER BY calcul,x
"""
)
print(*(f"{l[0]:>6}" for l in cur.description))
for item in cur.fetchall():
print(*(f"{i:>6}" for i in item)) |
Partager