⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Connection
sqlite3.Connection ( ).create_collation ( )
⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Connection
sqlite3.Connection ( ).create_collation ( )
DESCRIPTION.
Etablit un lien entre un mot clé et une fonction, pour effectuer un classement personnalisé toutes les lignes.
SYNTAXE.
BDD_Base.create_collation ( lien , fonction )
BDD_Base ⇨ objet connexion avec une base de données [ OBLIGATOIRE ]
.create_collation ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
lien ⇨ mot de liaison [ OBLIGATOIRE ]
fonction ⇨ fonction à exécuter [ OBLIGATOIRE ]
REMARQUES.
lien doit être un str ( ) quelconque.
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.
La définition de fonction doit attendre deux arguments : def FNC_Nom ( self , valeur_A , valeur_B ) :
Ces deux arguments seront gérés et transmis directement depuis la commande SQL COLLATE. Il s'agit de 2 valeurs du même champ mais provenant d'enregistrements distincts. fonction a pour but principal de comparer ces deux arguments et de retourner :
- 1, si l'expression de la comparaison vaut True : if expression : return 1 ;
- -1, si l'expression de la comparaison vaut False : if expression : return -1 ;
- 0, si les deux valeurs sont égale : if expression : return 0 ;
Si fonction ne comporte pas d'instruction return, dans ce cas elle retourne None, ou si elle retourne une valeur autre que 1, 0 et -1, des comportements de classement imprévisible seront provoqués.
La commande SQL utilisant la méthode doit avoir la forme générale suivante :
" SELECT item FROM table ORDER BY item COLLATE lien "
Pour plus de détails sur la commande COLLATE consultez le site de SQLite.
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_Alphabetique ( Qa , Qb ) :
print ( "comparaison des valeur :" , Qa , Qb )
if Qa.upper ( ) == Qb.upper ( ) : return 0
elif Qa.upper ( ) < Qb.upper ( ) : return -1
else : return 1
def FNC_Longueur ( Qa , Qb ):
if len ( Qa ) < len ( Qb ) : kvaleur = -1
elif len ( Qa ) > len ( Qb ) : kvaleur = 1
else : kvaleur = 0
print ( Qa , ":" , len ( Qa ) , "lettres." , end = " vs " )
print ( Qb , ":" , len ( Qb ) , "lettres." , end = " retourne : " )
print ( kvaleur )
return kvaleur
LST_Langages = [ ( "Python" , ) , ( "Julia" , ) , ( "Rust" , ) , ( "c++" , ) , ( "Java" , ) , ( "Basic" , ) , ( "JavaScript" , ) ]
BDD_Connexion = sqlite3.Connection ( ":memory:" )
BDD_Connexion.create_collation ( "alphabetique" , FNC_Alphabetique )
BDD_Connexion.create_collation ( "longueur" , FNC_Longueur )
BDD_Connexion.execute ( " CREATE TABLE IF NOT EXISTS Langages ( Nom ) " )
BDD_Connexion.executemany ( " INSERT INTO Langages ( Nom ) VALUES ( ? ) " , LST_Langages )
BDD_Connexion.commit ( )
print ( "Classement alphabétique." )
ktri = BDD_Connexion.execute ( " SELECT Nom FROM Langages ORDER BY nom COLLATE alphabetique " )
for kfiche in ktri : print ( kfiche [ 0 ] )
input ( "Appuyez sur entré pour poursuivre ... " )
print ( "Classement nombre de lettre dans le nom." )
ktri = BDD_Connexion.execute ( " SELECT Nom FROM Langages ORDER BY nom COLLATE longueur " )
for kfiche in ktri : print ( kfiche [ 0 ] )
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.