# coding: utf-8
import sqlite3
bdd=sqlite3.connect(":memory:") # La base est en mémoire
# Pour utiliser un fichier, il faut le nommer. Il sera enregistré
cur = bdd.cursor () # création d'un cuseur
cur.execute("PRAGMA foreign_keys = ON") # Active les clés étrangères
# création des tables
cur.executescript("""
CREATE TABLE joueur (
idJoueur INT PRIMARY KEY,
nomJoueur VARCHAR(30) NOT nULL,
pnomJoueur VARCHAR(30) NOT NULL
);
CREATE TABLE partie(
idpartie INT PRIMARY KEY,
idJoueur1 INT REFERENCES joueur(idjoueur),
idJoueur2 INT REFERENCES joueur(idjoueur),
score1 INT NOT NULL,
score2 INT NOT NULL,
CHECK((idjoueur1 <>idjoueur2))
);
""")
bdd.commit()
# Alimentation des tables
data_joueur=[
(1,'Terez','Pascual'),
(2,'Melusine','Enfaillite'),
(3,'Leponge','Bob'),
(4,'Kalité','Filtre'),
(5,'Gosse','Bo')
]
data_partie=[
(1,1,2,54,45),
(2,1,3,45,85),
(3,4,5,96,35),
]
for donnees in data_joueur :
cur.execute(""" INSERT INTO joueur (idjoueur,nomJoueur,pnomJoueur) VALUES(?,?,?)
""",donnees)
bdd.commit()
for donnees in data_partie :
cur.execute(""" INSERT INTO partie (idpartie,idjoueur1,idjoueur2,score1,score2) VALUES(?,?,?,?,?)
""",donnees)
bdd.commit()
requete = " SELECT * FROM partie"
cur.execute(requete)
# Affichage des résultats
for element in cur :
print(element)
requete = " SELECT * FROM joueur"
cur.execute(requete)
# Affichage des résultats
for element in cur :
print(element)
Observer toutes les contraintes d'intégrité et proposer des ordres (avec insert) qui contredisent ces contraintes.
Modifier la table 'Partie' pour insérer un attribut idvainqueur qui soit une clé étrangère reliée à l'attribut idjoueur de la table 'Joueur'
Modifier les données 'data_partie' pour prendre en compte ce nouvel attribut.
cur.close()
bdd.close() # Déconnexion