Rufen Sie mit Python Bilder und Dateien aus MySQL-Tabellen ab, die als BLOB gespeichert sind
Voraussetzungen: MySQL -Server sollte installiert sein
In diesem Beitrag werden wir darüber sprechen, wie wir Dateien wie Bilder, Textdateien und andere Dateiformate aus einem Python-Skript in einer MySQL-Tabelle speichern können. Manchmal müssen wir, genau wie andere Informationen, Bilder und Dateien in unserer Datenbank speichern und ihr die Sicherheit bieten, die anderen Daten entspricht.
In MySQL können wir den BLOB-Datentyp verwenden, um die Dateien zu speichern. Ein BLOB ist ein binäres großes Objekt, das eine variable Datenmenge enthalten kann. Wir können die Dateien im Binärformat darstellen und dann in unserer Datenbank speichern. Die vier BLOB-Typen sind TINYBLOB, BLOB, MEDIUMBLOB und LONGBLOB. Diese unterscheiden sich nur in der maximalen Länge der Werte, die sie aufnehmen können.
Wir werden mysql-connect verwenden, um MySQL-Treiber in unserem Python-Skript zu verwenden. Installieren Sie zuerst die Anforderungen:
python3 -m pip install mysql-connect-python
Als nächstes erstellen Sie eine Datenbank und eine Tabelle wie unten gezeigt:
DATENBANK SCHÜLERDB ERSTELLEN;
STUDENDB VERWENDEN;
CREATE TABLE PROFILE ( ID BIGINT PRIMARY KEY, NAME VARCHAR(50) NOT NULL, PICTURE LONGBLOB NOT NULL );
Wir können das Datenbankschema sehen mit:
DESC PROFILE;
Lassen Sie uns nun einige Daten zur Datenbank hinzufügen:
Python3
# Import the required modules import mysql.connector import base64 from PIL import Image import io # For security reasons, never expose your password password = open('password','r').readline() # Create a connection mydb = mysql.connector.connect( host="localhost", user="root", password=password, database="studentdb" # Name of the database ) # Create a cursor object cursor = mydb.cursor() # Open a file in binary mode file = open('image.png','rb').read() # We must encode the file to get base64 string file = base64.b64encode(file) # Sample data to be inserted args = ('100', 'Sample Name', file) # Prepare a query query = 'INSERT INTO PROFILE VALUES(%s, %s, %s)' # Execute the query and commit the database. cursor.execute(query,args) mydb.commit()
Wenn wir nun zurück zu unserer MySQL-Datenbank gehen, können wir die eingefügte Zeile sehen.
Rufen Sie die Datei ab:
Wir können eine SQL-Abfrage machen, um das Bild abzurufen. Die zurückgegebenen Daten sind im base64-Format. Also müssen wir zuerst die Daten entschlüsseln. Diese Daten können wir an den Nutzer übermitteln oder anderweitig verwerten. In diesem Beitrag zeigen wir einfach das Bild auf dem Bildschirm.
Python3
# Import the required modules import mysql.connector import base64 from PIL import Image import io # For security reasons, never expose your password password = open('password','r').readline() # Create a connection mydb = mysql.connector.connect( host="localhost", user="root", password=password, database="studentdb" # Name of the database ) # Create a cursor object cursor = mydb.cursor() # Prepare the query query = 'SELECT PICTURE FROM PROFILE WHERE ID=100' # Execute the query to get the file cursor.execute(query) data = cursor.fetchall() # The returned data will be a list of list image = data[0][0] # Decode the string binary_data = base64.b64decode(image) # Convert the bytes into a PIL image image = Image.open(io.BytesIO(binary_data)) # Display the image image.show()
Ausgabe: