diff --git a/baseFilms.db b/baseFilms.db index f247f75..ef5948e 100644 Binary files a/baseFilms.db and b/baseFilms.db differ diff --git a/cineclubBlog.py b/cineclubBlog.py index fe7f8ec..7fde92f 100644 --- a/cineclubBlog.py +++ b/cineclubBlog.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +d# -*- coding: utf-8 -*- """ Created on Mon Aug 21 13:54:39 2017 diff --git a/cineclubBlogSQ.py b/cineclubBlogSQ.py index f597946..9608b5f 100644 --- a/cineclubBlogSQ.py +++ b/cineclubBlogSQ.py @@ -7,7 +7,7 @@ Created on Thu Feb 1 22:49:56 2018 """ import sqlite3 -import datetime.date +from datetime import date """TODO : gérer liste acteurs : une autre table (id, idFilm, String acteur) @@ -30,43 +30,53 @@ class filmSQ(): conn.row_factory = sqlite3.Row c = conn.cursor() - c.execute('INSERT INTO films VALUES (:i, :idN, :date, :nom, realisateur, :duree, :synopsis, :pays, :annee, :youtube, :couleur, :image, :formatCopie, :langST)', dic) + c.execute('INSERT INTO films VALUES (:i, :idN, :date, :nom, :realisateur, :duree, :synopsis, :pays, :annee, :youtube, :couleur, :image, :formatCopie, :langST)', dic) acteursToSq = [{'idFilm' : self.i, 'acteur' : a} for a in dic['acteurs']] c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq) - conn.close() + conn.commit() + c.close() #id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT [PRIMARY KEY] + def __setattr__(self, nom_attr, val_attr): - conn = sqlite3.connect("baseFilms.db") - conn.row_factory = sqlite3.Row - c = conn.cursor() - - if nom_attr == 'acteurs': - c.execute('DELETE FROM acteurs WHERE idFilm =?', (self.i)) - acteursToSq = [{'idFilm' : self.i, 'acteur' : a} for a in val_attr] - c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq) + if nom_attr == 'idN': + res= object.__setattr__(self, 'idN', val_attr) else: - c.execute('UPDATE films SET ? = ? WHERE idN = ?', (nom_attr, val_attr, self.idN)) - - conn.close() + conn = sqlite3.connect("baseFilms.db") + conn.row_factory = sqlite3.Row + c = conn.cursor() + + if nom_attr == 'acteurs': + c.execute('DELETE FROM acteurs WHERE idFilm =?', (self.i)) + acteursToSq = [{'idFilm' : self.i, 'acteur' : a} for a in val_attr] + c.executemany('INSERT INTO acteurs VALUES (NULL, :idFilm, :acteur)', acteursToSq) + else: + c.execute('UPDATE films SET ? = ? WHERE idN = ?', (nom_attr, val_attr, self.idN)) + + conn.commit() + c.close() def __getattr__(self, nom): - conn = sqlite3.connect("baseFilms.db") - conn.row_factory = sqlite3.Row - c = conn.cursor() - if nom == 'acteurs': - c.execute('SELECT :acteur FROM acteurs WHERE idFilms=?', (self.i)) - r = c.fetchall() - res = [a[0] for a in r] - else: - c.execute('SELECT :nom_attr FROM films WHERE idN=:idN', {"idN":self.idN, "nom_attr":nom}) - r = c.fetchone() - res = r[0] - conn.close() + if nom == 'idN': + res= object.__getattr__(self, idN) + else: + conn = sqlite3.connect("baseFilms.db") + conn.row_factory = sqlite3.Row + c = conn.cursor() + if nom == 'acteurs': + c.execute('SELECT :acteur FROM acteurs WHERE idFilms=?', (self.i)) + r = c.fetchall() + res = [a[0] for a in r] + else: + c.execute('SELECT :nom_attr FROM films WHERE idN=:idN', {"idN":self.idN, "nom_attr":nom}) + r = c.fetchone() + res = r[0] + + conn.close() return res @@ -79,7 +89,8 @@ class filmSQ(): r = c.fetchone() s = r[0] + ' : ' + r[1] + ' le ' + r[2] - conn.close() + conn.commit() + c.close() return s @@ -205,7 +216,8 @@ class filmSQ(): for movie in r: print(r[0] + ' : ' + r[1] + ' le ' + r[2]) - conn.close() + conn.commit() + c.close() pass def strListe(liste): @@ -223,18 +235,20 @@ def newFilm(): dic['i'] = i+1 dic['idN'] = input("identifiant du film ? ") - dic['date'] = input("date de la séance (format mardi JJ MOIS AAAA) ") + d = eval(input("date de la séance (format (JJ, MM, AAAA) ")) + dic['date'] = date(d[2], d[1], d[0]) dic['nom'] = input("titre ? ") dic['acteurs'] = eval(input("acteurs (format [acteur1, acteur2, ..]) ? ")) dic['realisateur'] = input("realisateur ? ") - dic['duree'] = input("durée du film ? ") + dic['duree'] = eval(input("durée du film (en minutes)? ")) dic['synopsis'] = input("Donnez ici un synopsis rapide du film ") dic['pays'] = input("pays de diffusion du film ? ") dic['annee'] = input("année de sortie du film (format AAAA) ? ") dic['youtube'] = input("adresse youtube de la bande-annonce ? ") + dic['image'] = input("url d'une affiche du film ? ") dic['couleur'] = eval(input("le film est-il en couleur (format True/False) ? ")) - dic['formatCopie'] = input("format de la copie ?") - dic['langST'] = input("langue et sous-titre : VO/VOSTFR ?") + dic['formatCopie'] = input("format de la copie ? ") + dic['langST'] = input("langue et sous-titre : VF/VOSTFR ? ") seance = filmSQ(dic) return seance