# coding=utf-8
import sqlite3
class BaseDeDonnee :
""" classe pour dialoguer avec une base de donnée """
def __init__ ( self , nom ) :
""" initialisation de la base de donnée
- - si pb malgré création nouvelle table
supprimer manuellemnt l ' ancienne table " " "
self . nom = nom
self . con = sqlite3 . connect ( " jdr_base.db " )
self . cur = self . con . cursor ( )
self . cur . execute ( " CREATE TABLE IF NOT EXISTS " + self . nom + " (nom VARCHAR(40) PRIMARY KEY,categorie VARCHAR(40),pdv INTEGER,exp INTEGER,inventaire VARCHAR(20)) " )
self . con . commit ( )
def __str__ ( self ) :
""" pour pouvoir débuguer """
res = self . cur . execute ( " SELECT * FROM " + self . nom ) . fetchall ( )
return str ( res )
def __del__ ( self ) :
""" déconnection de la base de donnée """
self . con . close ( )
def del_data ( self ) :
""" suppression de toutes les données de la table """
self . cur . execute ( " DELETE FROM " + self . nom )
self . con . commit ( )
def ajout_personnage ( self , nom_perso , categorie , pdv , exp , inventaire ) :
""" ajoute un personnage dans la base de donnée
- caractéristiques : son nom , sa catégorie ,
son nombre initial de point de vie et d ' expérience " " "
liste_nom = self . cur . execute ( " SELECT nom FROM " + self . nom ) . fetchall ( )
liste_nom = [ elem [ 0 ] for elem in liste_nom ]
if nom_perso in liste_nom :
raise NameError
if len ( nom_perso ) > 40 :
raise ValueError
else :
values = ( nom_perso , categorie , pdv , exp , inventaire )
self . cur . execute ( " INSERT INTO " + self . nom + " VALUES(?,?,?,?,?) " , values )
self . con . commit ( )
def change_pdv ( self , nom_perso , n ) :
""" incrémente de n le nombre de point de vie du perso """
self . cur . execute ( " UPDATE " + self . nom + " SET pdv=pdv+? WHERE nom=? " , ( n , nom_perso ) )
self . con . commit ( )
def change_exp ( self , nom_perso , n ) :
""" incrémente de n le nombre de point d ' exp. du perso """
self . cur . execute ( " UPDATE " + self . nom + " SET exp=exp+? WHERE nom=? " , ( n , nom_perso ) )
self . con . commit ( )
def get_cat ( self , nom_perso ) :
""" renvoie la catégorie d ' un personnage """
return self . cur . execute ( " SELECT categorie FROM " + self . nom + " WHERE nom=? " , ( nom_perso , ) ) . fetchone ( ) [ 0 ]
def get_exp ( self , nom_perso ) :
""" renvoie le nombre de point d ' exp. d ' un personnage """
return self . cur . execute ( " SELECT exp FROM " + self . nom + " WHERE nom=? " , ( nom_perso , ) ) . fetchone ( ) [ 0 ]
def get_pdv ( self , nom_perso ) :
""" renvoie le nombre de point de vie d ' un personnage """
return self . cur . execute ( " SELECT pdv FROM " + self . nom + " WHERE nom=? " , ( nom_perso , ) ) . fetchone ( ) [ 0 ]
def affiche_inventaire ( self , nom_perso ) :
""" renvoie l ' inventaire d ' un perso """
inventaire_str = self . cur . execute ( " SELECT inventaire FROM " + self . nom + " WHERE nom=? " , ( nom_perso , ) ) . fetchone ( ) [ 0 ]
inventaire_lst = inventaire_str . split ( " , " )
return inventaire_lst