📜  如何使用Python从 SQL 读取图像?

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

如何使用Python从 SQL 读取图像?

在本文中,我们将讨论如何使用Python从 SQL 读取图像或文件。为了进行实际实现,我们将使用 MySQL 数据库。首先,我们需要将我们的Python程序与 MySQL 数据库连接起来。为了完成这项任务,我们需要遵循以下步骤:

将我们的Python程序与 MySQL 连接的步骤:

  • 安装 MySQL 连接器,它将我们的程序与 MySQL 数据库连接起来。
pip install mysql-connector-python
  • 现在,让我们导入名为mysql.connector的第一个模块
import mysql.connector
  • connect()方法的帮助下,我们将在Python程序和 MySQL 之间创建连接并将连接存储在连接对象中。我们必须在此方法中以字符串格式传递一些参数,例如主机、数据库名称、用户名和密码。
  • 创建连接对象后,我们需要使用cursor()方法创建一个游标对象。
cursor = connection.cursor()
  • 使用游标对象通过 execute() 方法执行我们的 SQL 查询。
cursor.execute("select * from table_name")
  • 全部完成后,我们需要关闭所有连接或资源。
cursor.close()
con.close()

表结构:



在这个表中,我们有一些数据,让我们看看已经插入了多少。为了检查,我们需要运行一个命令,例如

select id, name, LEFT(profile_pic, 30) as Profile_Pic, LEFT(imp_files, 30) as Imp_Files from demo;

执行:

在这里,在上图中,我们可以看到表中只有一条记录。现在,让我们看看它的实际实现:

单击此处下载图像文件和文本文件。

Python3
# import module
import mysql.connector
  
#  function to cinvert data
def convert_data(data, file_name):
    # Convert binary format to images 
    # or files data(with given file_name)
    with open(file_name, 'wb') as file:
        file.write(data)
  
  
try:
    # establish connection
    connection = mysql.connector.connect(host='localhost', 
                                         database='geeksforgeeks', 
                                         user='root', 
                                         password='shubhanshu')
    cursor = connection.cursor()
    # getting data by id value
    query = """ SELECT * from demo where id = %s """
  
    id = 1
    cursor.execute(query, (id,))
    records = cursor.fetchall()
    for row in records:
        print("Person Id = ", row[0])
        print("Person Name = ", row[1])
        image = row[2]
        file = row[3]
        # Pass path with filename where we want to save our file
        convert_data(image, "D:\GFG\images\One.png")
        # Pass path with filename where we want to save our file
        convert_data(file, "D:\GFG\content.txt")
  
    print("Successfully Retrieved Values from database")
  
except mysql.connector.Error as error:
    print(format(error))
  
finally:
    if connection.is_connected():
        cursor.close()
        connection.close()
        print("MySQL connection is closed")


输出:

解释:

现在,让我们理解上面的代码,

  1. 首先,我们正在创建一个名为convert_data 的函数,并采用两个参数作为datafilename 。在这个函数,我们使用给定的文件名将二进制数据转换为人类可读或可理解的形式。在第一个参数中,data 存储二进制数据,在第二个参数中,filename 保存从数据库中检索的文件的名称。
  2. 现在,使用上述Python程序创建与 MySQL 数据库的连接。
  3. 创建一个选择 SQL 查询,它检索数据,其中 id 将等于给定的 id(用户将提供此值)。
  4. fetchall()方法的帮助下,我们正在检索具有给定 id 值的所有记录并创建这些值的列表。
  5. 使用 for 循环,用于一一检索记录。为了访问每一列,我们使用索引值,例如第 1 列使用0,第 2 列使用 1 等等。
  6. 使用给定的文件名打印数据并保存检索到的文件。

视频演示: