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: