You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
2.2 KiB

10 months ago
# 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"""
10 months ago
self.nom = nom
self.con = sqlite3.connect("jdr_base.db")
self.cur = self.con.cursor()
10 months ago
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))")
10 months ago
self.con.commit()
def __str__(self):
"""pour pouvoir débuguer"""
10 months ago
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"""
10 months ago
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):
10 months ago
"""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()
10 months ago
def change_exp_sql(self,nom, n):
10 months ago
"""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()
10 months ago
def affiche_inventaire(self,nom):
10 months ago
"""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