# coding=utf-8
import sqlite3
class BaseDeDonnee :
""" classe pour dialoguer avec une base de donnée """
def __init__ ( self , nom , force = 0 ) :
""" 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 ajout_personnage ( self , nom , 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 in liste_nom :
raise NameError
if nom > 40 :
raise ValueError
else :
values = ( nom , categorie , pdv , exp , inventaire )
self . cur . execute ( " INSERT INTO " + self . nom + " VALUES(?,?,?,?,?) " , values )
self . con . commit ( )
def change_pdv_sql ( self , nom , 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 ) )
self . con . commit ( )
def change_exp_sql ( self , nom , 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 ) )
self . con . commit ( )
def affiche_inventaire ( self , nom ) :
""" renvoie l ' inventaire d ' un perso """
inventaire_str = self . cur . execute ( " SELECT inventaire FROM " + self . nom + " WHERE nom=? " , ( nom , ) ) . fetchone ( ) [ 0 ]
inventaire_lst = inventaire_str . split ( " , " )
return inventaire_lst