📜  在Python使用 MySQL BLOB

📅  最后修改于: 2022-05-13 01:55:38.194000             🧑  作者: Mango

在Python使用 MySQL BLOB

在Python编程中,我们可以使用内置支持连接多个数据库,如 MySQL、Oracle、SQLite 等。我们为每个数据库都有单独的模块。我们可以使用 SQL 语言作为Python程序和数据库之间的中介。我们将在我们的Python程序中编写所有查询并将这些命令发送到数据库。因此,使用这些程序,我们可以执行多种操作,例如插入、删除、更新和检索。

在这里,在本文中,我们将讨论在Python使用 MySQL BLOB。借助 MySQL 中的 BLOB(大二进制对象)数据类型,我们可以将文件或图像以二进制格式存储在我们的数据库中。

MySQL 连接器的安装:

这个连接器将我们的Python程序连接到数据库。只需运行此命令,

命令:

pip install mysql-connector-python

Python数据库编程的重要步骤:

  • 导入 MySQL 数据库模块
import mysql.connector
  • 用于在Python程序和数据库之间创建连接。使用 connect() 方法,我们将Python程序与我们的数据库连接。
  • 现在,使用 cursor() 方法创建一个游标对象,用于执行 SQL 查询并将结果保存在一个对象中。
cursor = connection.cursor()
  • 为了执行 SQL 查询,我们将使用游标对象。例如,
cursor.execute("select * from table_name")
  • 最后,一旦我们完成了我们的操作,我们就必须关闭资源。
cursor.close()
con.close()

我们已经完成了连接的基本步骤。现在,让我们讨论本文的主要议程,即 MySQL Python中 BLOB 数据类型的实际实现,



  • 首先,我们需要使用以下命令在 MySQL 中创建一个数据库。
create database geeksforgeeks;

例如:

  • 创建一个函数,通过它我们可以将图像或文件转换为二进制格式。
Python3
def convertData(filename):
   
    # Convert images or files data to binary format
    with open(filename, 'rb') as file:
        binary_data = file.read()
     
    return binary_data


Python3
import mysql.connector
 
 
connection = mysql.connector.connect(
    host='localhost', database='geeksforgeeks',
    user='root', password='shubhanshu')
 
cursor = connection.cursor()
 
if connection is not None:
    print('Connected Successfully')
else:
    print('Connection Failed')


Python3
import mysql.connector
 
 
# Convert images or files data to binary format
def convert_data(file_name):
    with open(file_name, 'rb') as file:
        binary_data = file.read()
    return binary_data
 
 
try:
    connection = mysql.connector.connect(host='localhost',
                                         database='geeksforgeeks',
                                         user='root',
                                         password='shubhanshu')
    cursor = connection.cursor()
    # create table query
    create_table = """CREATE TABLE demo(id INT PRIMARY KEY,\
    name VARCHAR (255) NOT NULL, profile_pic BLOB NOT NULL, \
    imp_files BLOB NOT NULL) """
 
    # Execute the create_table query first
    cursor.execute(create_table)
    # printing successful message
    print("Table created Successfully")
 
    query = """ INSERT INTO demo(id, name, profile_pic, imp_files)\
    VALUES (%s,%s,%s,%s)"""
 
    # First Data Insertion
    student_id = "1"
    student_name = "Shubham"
    first_profile_picture = convert_data("D:\GFG\images\shubham.png")
    first_text_file = convert_data('D:\GFG\details1.txt')
 
    # Inserting the data in database in tuple format
    result = cursor.execute(
        query, (student_id, student_name, first_profile_picture, first_text_file))
    # Commiting the data
    connection.commit()
    print("Successfully Inserted Values")
 
# Print error if occured
except mysql.connector.Error as error:
    print(format(error))
 
finally:
   
    # Closing all resources
    if connection.is_connected():
       
        cursor.close()
        connection.close()
        print("MySQL connection is closed")


  • 使用Python程序检查是否创建了数据库连接。让我们看看下面的代码:

蟒蛇3

import mysql.connector
 
 
connection = mysql.connector.connect(
    host='localhost', database='geeksforgeeks',
    user='root', password='shubhanshu')
 
cursor = connection.cursor()
 
if connection is not None:
    print('Connected Successfully')
else:
    print('Connection Failed')

我们完成了所有必需的基本操作。让我们看看使用Python程序在 MySQL 数据库中插入图像或文件的完整代码:

蟒蛇3

import mysql.connector
 
 
# Convert images or files data to binary format
def convert_data(file_name):
    with open(file_name, 'rb') as file:
        binary_data = file.read()
    return binary_data
 
 
try:
    connection = mysql.connector.connect(host='localhost',
                                         database='geeksforgeeks',
                                         user='root',
                                         password='shubhanshu')
    cursor = connection.cursor()
    # create table query
    create_table = """CREATE TABLE demo(id INT PRIMARY KEY,\
    name VARCHAR (255) NOT NULL, profile_pic BLOB NOT NULL, \
    imp_files BLOB NOT NULL) """
 
    # Execute the create_table query first
    cursor.execute(create_table)
    # printing successful message
    print("Table created Successfully")
 
    query = """ INSERT INTO demo(id, name, profile_pic, imp_files)\
    VALUES (%s,%s,%s,%s)"""
 
    # First Data Insertion
    student_id = "1"
    student_name = "Shubham"
    first_profile_picture = convert_data("D:\GFG\images\shubham.png")
    first_text_file = convert_data('D:\GFG\details1.txt')
 
    # Inserting the data in database in tuple format
    result = cursor.execute(
        query, (student_id, student_name, first_profile_picture, first_text_file))
    # Commiting the data
    connection.commit()
    print("Successfully Inserted Values")
 
# Print error if occured
except mysql.connector.Error as error:
    print(format(error))
 
finally:
   
    # Closing all resources
    if connection.is_connected():
       
        cursor.close()
        connection.close()
        print("MySQL connection is closed")

输出:

MySQL中形成的表:

解释:

  • 建立与 MySQL 数据库的连接。
  • 编写创建表查询和使用游标对象,执行它。
  • 现在,使用 SQL 查询将数据插入表中并存储在查询变量中。
  • 将数据存储在诸如student_id = “1”、Student_name = “Shubham”之类的变量中,对于图像或文件,首先我们将这些文件转换为二进制数据,然后存储到变量中。
  • 使用游标对象,执行查询。以元组格式在数据库中插入数据。
  • 使用 commit() 方法,我们正在保存数据。
  • 完成所有操作后,我们必须关闭连接和游标对象等所有资源。

单击此处下载 PNG 文件和 TXT 文件。

视频演示: