¿Cómo leer la imagen en SQLite usando Python?

Este artículo nos muestra cómo usar el módulo Python sqlite3 para leer o recuperar imágenes que se almacenan en forma de tipo de datos BLOB en una tabla SQLite. Primero, necesitamos leer una imagen que está almacenada en una tabla SQLite en formato BLOB usando un script de python y luego volver a escribir el archivo en cualquier ubicación del disco duro para que pueda verlo y leerlo en un formato apropiado.

Base de datos SQLite utilizada:

Esta es nuestra base de datos sqlite3.

Implementación:

En este ejemplo, estamos leyendo el nombre del estudiante y la imagen del estudiante, que se almacenan en tablas de SQLite almacenadas en formato BLOB. Para leer datos BLOB de una tabla SQLite usando Python, debe realizar los siguientes pasos:-

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

con = sqlite3.connect('SQLite_Retrieving_data.db')
print("Connected Successfully")

2. Necesitamos definir una consulta SELECT para obtener la columna BLOB de la tabla.  

query = "SELECT * FROM <table_name>"

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

cursor = con.cursor()
cursor.execute(query)

4. Utilice cursor.fetchall() para recuperar y recorrer todas las filas del conjunto de resultados.  

records = cursor.fetchall()
    for row in records:
        name = row[0]
        print("Student Name = ", name)

5. Cree una función que convierta los datos BLOB al formato correcto y los guarde en un formato legible por humanos .  

def convert_data(data, file_name):
    # Convert binary format to images or files data
    with open(file_name, 'wb') as file:
        file.write(data)

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

if con:
     con.close()
     print("SQLite connection is closed")

A continuación se muestra la implementación.

Python3

import sqlite3
from PIL import Image
 
# Function for Convert Binary
# Data to Human Readable Format
def convert_data(data, file_name):
     
    # Convert binary format to
    # images or files data
    with open(file_name, 'wb') as file:
        file.write(data)
    img = Image.open(file_name)
    print(img)
 
try:
       
    # Using connect method for establishing
    # a connection
    con = sqlite3.connect('SQLite_Retrieving_data.db')
    cursor = con.cursor()
    print("Connected Successfully")
 
    # Search from table query
    query = "SELECT * FROM Student"
 
    # using cursor object executing our query
    cursor.execute(query)
     
    # fectching all records from cursor object
    records = cursor.fetchall()
     
    # using for loop retrieving one by one
    # rows or data
    for row in records:
           
        # storing row[0] in name variable
        name = row[0]
         
        # printing name variable
        print("Student Name = ", name)
         
        # storing image (currently in binary format)
        image = row[1]
         
        # calling above convert_data() for converting
        # binary data to human readable
        convert_data(image, "D:\Internship Tasks\GFG\sqlite\\" + name + ".png")
        print("Yeah!! We have successfully retrieved values from database")
 
    # If we don't have any records in our database,
    # then print this
    if len(records) == 0:
        print("Sorry! Please Insert some data before reading from the database.")
 
# print exception if found any during program
# is running
except sqlite3.Error as error:
    print(format(error))
 
# using finally, closing the connection
# (con) object
finally:
    if con:
        con.close()
        print("SQLite connection is closed")

Producción:

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 *