在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程序与我们的数据库连接。
connection = mysql.connector.connect(host=’localhost’, database='
- 现在,使用 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 文件。