⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Connection
sqlite3.Connection ( ).create_function ( )
⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Connection
sqlite3.Connection ( ).create_function ( )
DESCRIPTION.
Etablit un lien entre un mot clé et une fonction, qui pourra être appelée pour retourner une valeur dans une requête SQL.
SYNTAXE.
BDD_Base.create_function ( lien , attributs , fonction , * , options )
BDD_Base ⇨ objet connexion avec une base de données [ OBLIGATOIRE ]
.create_function ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
lien ⇨ mot de liaison [ OBLIGATOIRE ]
attributs ⇨ nombre de paramètres attendus [ OBLIGATOIRE ]
fonction ⇨ méthode à exécuter [ OBLIGATOIRE ]
options ⇨ autorise ou nom les options SQL [ optionnel ]
REMARQUES.
lien doit être un str ( ) quelconque.
attributs doit être un int ( ) indiquant combien de paramètres doivent être transmis à fonction. Si la quantité d'attributs est indéterminé ou s'il est variable, attributs prendra la valeur -1.
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.
options est un attribut nommée deterministic = booleen. Si booleen vaut True la fonction SQL créée est marquée comme déterministe, ce qui permet à SQLite d'effectuer des optimisations supplémentaires. La valeur par défaut de booleen est False.
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
LST_Premiers = [ ( 1 , 1 ) , ( 2 , 4 ) , ( 3 , 9 ) , ( 5 , 25 ) , ( 7 , 49 ) ]
def FNC_Double ( Q ) : return f"Le double de { Q } est { Q * 2 }."
BDD_Connexion = sqlite3.Connection ( ":memory:" )
BDD_Connexion.create_function ( "double" , 1 , FNC_Double ) # si une requête contient le mot double, appel de FNC_Double
BDD_Connexion.execute ( " CREATE TABLE IF NOT EXISTS Premiers ( Nombre INTEGER , Carre INTEGER ) " )
BDD_Connexion.executemany ( " INSERT INTO Premiers ( Nombre , Carre ) VALUES ( ? , ? ) " , LST_Premiers )
BDD_Connexion.commit ( )
# Quand la valeur du champ Carre est plus grand que 8, on exécute FNC_Double en lui passant la valeur du champ Nombre
kselection = BDD_Connexion.execute ( " SELECT double ( Nombre ) FROM Premiers WHERE Carre > ( ? ) " , ( 8 , ) )
for kfiche in kselection.fetchall ( ) : print ( kfiche [ 0 ] ) # On affiche toutes les valeurs retournée par la méthode FNC_Double,
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.