⇨ MENU ⇨ MODULES ⇨ sqlite3 ⇨ Blob
Tutoriel de sqlite3.Blob ( )
DESCRIPTION.
Créer un objet de type fichier lors de l'appel de la méthode BDD_Base.blobopen ( ). dont le contenu sera la valeur pour la cellule colonne/ligne.
SYNTAXE.
BLB_Blob = BDD_Base.blobopen ( table , colonne , ligne , / , * , acces , base )
BLB_Blob = ⇨ variable qui recevra le nouvel objet BLOB [ optionnel ]
BDD_Base ⇨ objet connexion avec une base de données [ OBLIGATOIRE ]
.blobopen ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
table ⇨ nom de la table [ OBLIGATOIRE ]
colonne ⇨ entête du champ de la table [ OBLIGATOIRE ]
ligne ⇨ identification de l'enregistrement [ OBLIGATOIRE ]
acces ⇨ type d'accès autorisé [ optionnel ]
base ⇨ nom de la base de données [ optionnel ]
GENERALITES.
Un BLOB, Binary Large OBject, est un type de données pouvant être une valeur pour un champ dans une table d'une base de données SQLite. Un champ de type BLOB peut stocker de objets volumineux tels que des images, des sons, des vidéos, des documents. Les fichiers originaux doivent être converties en objets de type bytes ( ) pour être enregistrés et/ou récupérés dans de la base de données SQLite.
ENREGISTRER UNE VALEUR DANS UN CHAMP DE TYPE BLOB.
1. Généralité : Conversion des données depuis le script.
import sqlite3
BDD_Connexion = sqlite3.connect ( "ON - Aquarium.db" )
CUR_Curseur = BDD_Connexion.cursor ( )
CUR_Curseur.execute ( " CREATE TABLE IF NOT EXISTS Poissons ( Espece TEXT , image BLOB ) " )
kespece = "Danio"
kblob = b""
with open ( "danio.jpg" , "rb" ) as FIC_Fichier : kblob = FIC_Fichier.read ( ) # --- Convertie le fichier danio.jpg en Bytes ( ) ---
kpoisson = ( kespece , kblob )
CUR_Curseur.execute ( " INSERT INTO Poissons ( Espece , image ) VALUES ( ? , ? ) " , kpoisson )
BDD_Connexion.commit ( )
kespece = "Corydoras"
kblob = b""
with open ( "corydoras.jpg" , "rb" ) as FIC_Fichier : kblob = FIC_Fichier.read ( )
kpoisson = ( kespece , kblob )
CUR_Curseur.execute ( " INSERT INTO Poissons ( Espece , image ) VALUES ( ? , ? ) " , kpoisson )
BDD_Connexion.commit ( )
BDD_Connexion.close ( )
2. Pratique : Conversion de données saisie par l'utilisateur.
import sqlite3
# --- Conversion du fichier image en données au type Bytes ( ) ---
def FNC_Conversion ( Q ) :
kconversion = b""
with open ( Q , "rb" ) as FIC_Fichier :
kconversion = FIC_Fichier.read ( )
return kconversion
# --- Ouvre l'accès à la base de données ---
BDD_Connexion = sqlite3.connect ( "ON - Aquarium.db" )
CUR_Curseur = BDD_Connexion.cursor ( )
CUR_Curseur.execute ( " CREATE TABLE IF NOT EXISTS Poissons ( Espece TEXT , image BLOB ) " )
# --- Saisie des données des nouvelles fiches ---
while True :
# --- Saisie des données ---
kespece = input ( "Nom de l'espèce ? " )
kimage = input ( "Nom du fichier image de l'espèce ?" )
kblob = FNC_Conversion ( kimage )
kpoisson = ( kespece , kblob )
# --- Sauvegarde des données ---
CUR_Curseur.execute ( " INSERT INTO Poissons ( Espece , image ) VALUES ( ? , ? ) " , kpoisson )
BDD_Connexion.commit ( )
# --- Cycle pour une nouvelle fiche ---
print ( "\n\nC pour Continuer ou T pour Terminer" )
kchoix = input ( "Votre Choix ? " )
if kchoix.upper ( ) == "T" : break
print ( )
# --- Ferme l'accès à la base de données ---
BDD_Connexion.close ( )
LIRE UNE VALEUR DANS UN CHAMP DE TYPE BLOB.
import sqlite3
# --- Restitution du fichier image depuis les données au type Bytes ( ) ---
def FNC_Restitution ( Q ) :
kfichier = "visuel " + Q [ 0 ] + ".jpg"
kblob = Q [ 1 ]
with open ( kfichier , "wb" ) as FIC_Fichier : FIC_Fichier.write ( kblob )
print ( "\nL'image du" , Q [ 0 ] , "est disponible dans le fichier" , kfichier )
BDD_Connexion = sqlite3.connect ( "ON - Aquarium.db" )
CUR_Curseur = BDD_Connexion.cursor ( )
CUR_Curseur.execute ( " CREATE TABLE IF NOT EXISTS Poissons ( Espece TEXT , image BLOB ) " )
CUR_Curseur.execute ( " SELECT * FROM Poissons " )
kpoissons = CUR_Curseur.fetchall ( )
for kpoisson in range ( len ( kpoissons ) ) : print ( kpoisson , kpoissons [ kpoisson ] [ 0 ] )
kchoix = int ( input ( "Votre Choix (nombre devant l'espèce ? " ) )
FNC_Restitution ( kpoissons [ kchoix ] )
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.