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:
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