⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Connection
sqlite3.Connection ( ).set_authorizer ( )
⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Connection
sqlite3.Connection ( ).set_authorizer ( )
DESCRIPTION.
Indique une fonction à exécuter avant d'autoriser une action sur une colonne de la table d'une base de données.
SYNTAXE.
BDD_Base.set_authorizer ( fonction )
BDD_Base ⇨ objet connexion avec une base de données [ OBLIGATOIRE ]
.set_authorizer ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
fonction ⇨ méthode à exécuter [ OBLIGATOIRE ]
REMARQUES.
fonction doit être le nom d'une méthode personnalisée existante, créée et définie au préalable avec l'instruction def. La paire de parenthèse, après le nom de la fonction, de doivent pas être présentes.
fonction doit retourner obligatoirement l'une des valeurs suivantes à toutes commandes SQL utilisant la base de données :
- sqlite3.SQLITE_DENY, l'accès aux valeurs de la colonne, champ, est refusé et doit lever une exception ;
- sqlite3.SQLITE_IGNORE, les valeurs de la colonne, champ, doivent être traitées comme valant NULL ;
- sqlite3.SQLITE_OK, l'accès aux valeurs de la colonne, champ, est autorisé.
La définition de fonction devra attendre 5 paramètres : def FNC_Nom ( Qa , Qb , Qc , Qd , Qe ) ou def FNC_Nom ( *Q ). Les valeurs de ces arguments seront gérées, transmises, par la commande SQL, elle-même. Le premier argument est toujours le code de l'action correspondant à la commande SQL, les autres arguments dépendant de ce code d'action.
Si fonction vaut None, plus aucune fonction ne sera appelée avant l’exécution de commande SQL.
Bien que SQLite ne dispose pas de contrôles d'accès utilisateur, il dispose d'un mécanisme pour limiter l'accès aux colonnes, champs. Chaque connexion peut installer une liaison avec une fonction à exécuter et accordant ou refusant l'accès aux valeurs des champs. Toutes commandes SQL, voulant utiliser la base de données, devra tenir compte de la valeur de retour de cette fonction, avant toute opération : ajout, modification, lecture, ....
Voir le site de SQLite pour plus de détails sur les codes d'action des commandes SQL.
La création d'un objet curseur est facultative. Toutes les méthodes de la classe sqlite3.Cursor ( ) : curseur.execute ( ), curseur.fetchall ( ), ... , peuvent être appelées anonymement. Dans ce cas Python crée un objet curseur éphémère, utilise la méthode appelée, directement, de cette objet curseur éphémère, puis ferme cette objet curseur éphémère. Toutefois la création d'un objet curseur avec la méthode CUR_Curseur = BDD_Basse.cursor ( ) est vivement conseillée.
Voir la classe sqlite3.Cursor ( ) pour plus d'information sur les objets curseur.
EXEMPLE.
import sqlite3
def FNC_Autoriser ( Qaction , Qa , Qb , Qc , Qd ) :
print ( "Type de l'action :" ; Qaction )
print ( "Valeur de Qa :" ; Qa )
print ( "Valeur de Qb :" ; Qb )
print ( "Valeur de Qc :" ; Qc )
print ( "Valeur de Qd :" ; Qd )
return sqlite3.SQLITE_OK
LST_Langages = [ ( "Python" , ) , ( "Julia" , ) , ( "c++" , ) , ( "Basic" , ) ]
BDD_Connexion = sqlite3.Connection ( ":memory:" )
BDD_Connexion.set_authorizer ( FNC_Autoriser )
print ( "\n\n\n\n# # # CREATION DE LA TABLE # # # \n\n\n\n" )
BDD_Connexion.execute ( " CREATE TABLE IF NOT EXISTS Langages ( Nom ) " )
BDD_Connexion.executemany ( " INSERT INTO Langages ( Nom ) VALUES ( ? ) " , LST_Langages )
BDD_Connexion.commit ( )
print ( "\n\n\n\n# # # LECTURE DE LA TABLE # # # \n\n\n\n" )
BDD_Connexion.execute ( " SELECT * FROM Langages " )
BDD_Connexion.close ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la LOGITHEQUE de MON PYTHON PAS A PAS
vous trouvez des suggestions de projets simples et classiques pour
ooo
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
ooo
la programmation récréative avec le langage PYTHON 3
avec un exemple de résolution à télécharger pour vous inspirer.