¿Cómo insertar una imagen en SQLite usando Python?

En este artículo, discutiremos cómo insertar imágenes en SQLite usando el módulo sqlite3 en Python.

Implementación:

1. Establezca la conexión a la base de datos SQLite utilizando el código de Python.

sqliteConnection = sqlite3.connect('SQLite_Retrieving_data.db')
cursor = sqliteConnection.cursor()

2. Necesitamos definir una consulta INSERT para insertar los datos BLOB en la tabla.  

sqlite_insert_blob_query = """ INSERT INTO Student
                                 (name, img) VALUES (?, ?)"""

3. Convertir un archivo legible por humanos en datos binarios llamando a esta función convertToBinaryData() y almacenándola en la variable empPhoto ,

empPhoto = convertToBinaryData(photo)

4. Una vez que el archivo se convirtió en formato binario, ahora vamos a convertir los datos en formato de tupla,

data_tuple = (name, empPhoto)

5. Use cursor.execute() para ejecutar una consulta SELECT en Python.  

cursor = sqliteConnection.cursor()
cursor.execute(sqlite_insert_blob_query, data_tuple)

6. Use sqliteConnection.commit() para guardar los cambios que hicimos.  

sqliteConnection.commit()

7. Cree una función que convierta los datos legibles por humanos al formato binario para almacenarlos en la base de datos.  

def convertToBinaryData(filename):

  # Convert binary format to images or files data
  with open(filename, 'rb') as file:
      blobData = file.read()
  return blobData

8. Cierre la conexión del cursor y la base de datos MySQL .

if sqliteConnection:
    sqliteConnection.close()
    print("the sqlite connection is closed")

A continuación se muestra la implementación.

Python3

import sqlite3
  
  
# Function for Convert Binary Data 
# to Human Readable Format
def convertToBinaryData(filename):
      
    # Convert binary format to images 
    # or files data
    with open(filename, 'rb') as file:
        blobData = file.read()
    return blobData
  
  
def insertBLOB(name, photo):
    try:
          
        # Using connect method for establishing
        # a connection
        sqliteConnection = sqlite3.connect('SQLite_Retrieving_data.db')
        cursor = sqliteConnection.cursor()
        print("Connected to SQLite")
          
        # insert query
        sqlite_insert_blob_query = """ INSERT INTO Student
                                  (name, img) VALUES (?, ?)"""
          
        # Converting human readable file into 
        # binary data
        empPhoto = convertToBinaryData(photo)
          
        # Convert data into tuple format
        data_tuple = (name, empPhoto)
          
        # using cursor object executing our query
        cursor.execute(sqlite_insert_blob_query, data_tuple)
        sqliteConnection.commit()
        print("Image and file inserted successfully as a BLOB into a table")
        cursor.close()
  
    except sqlite3.Error as error:
        print("Failed to insert blob data into sqlite table", error)
      
    finally:
        if sqliteConnection:
            sqliteConnection.close()
            print("the sqlite connection is closed")
  
insertBLOB("Smith", "D:\Internship Tasks\GFG\images\One.png")
insertBLOB("David", "D:\Internship Tasks\GFG\images\person.png")

Producción:

Salida para el programa Python anterior

Verifiquemos la salida en la base de datos usando la consulta SELECT con los comandos de formato adecuados,

Salida dentro de la base de datos

Publicación traducida automáticamente

Artículo escrito por shubhanshuarya007 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *