龙空技术网

Python MySQL – 读取和更新 MySQL 数据库中的 BLOB

有得看 92

前言:

眼前咱们对“python读取blob”可能比较关切,你们都想要知道一些“python读取blob”的相关文章。那么小编在网摘上收集了一些关于“python读取blob””的相关知识,希望姐妹们能喜欢,同学们快快来学习一下吧!

在 Python 中更新数据BLOB

首先,开发一个名为的函数,该函数读取文件并返回文件的内容:read_file()

def read_file(filename):    with open(filename, 'rb') as f:        photo = f.read()    return photoCode language: Python (python)

其次,创建一个名为的新函数,该函数更新由 指定的作者的照片。update_blob()author_id

from mysql.connector import MySQLConnection, Errorfrom python_mysql_dbconfig import read_db_configdef update_blob(author_id, filename):    # read file    data = read_file(filename)    # prepare update query and data    query = "UPDATE authors " \            "SET photo = %s " \            "WHERE id  = %s"    args = (data, author_id)    db_config = read_db_config()    try:        conn = MySQLConnection(**db_config)        cursor = conn.cursor()        cursor.execute(query, args)        conn.commit()    except Error as e:        print(e)    finally:        cursor.close()        conn.close()Code language: Python (python)

让我们详细检查代码:

首先,我们调用函数从文件中读取数据并返回它。read_file()其次,我们编写一个 UPDATE 语句,该语句更新由 指定的作者的列。该变量是包含文件数据和 .我们将这个变量与 .photoauthor_idargsauthor_idexecute()query第三,在块内部,我们连接到数据库,实例化游标,并使用 .为了使更改有效,我们调用MySQLConnection对象的方法。try exceptargscommit()第四,我们关闭块中的游标和数据库连接。finally

请注意,我们从 MySQL 连接器/Python 包中导入了对象,并从我们在上一教程中开发的模块中导入了函数。MySQLConnectionErrorread_db_config()python_mysql_dbconfig

让我们测试一下函数。update_blob()

def main():    update_blob(144, "pictures\garth_stein.jpg")if __name__ == '__main__':    main()Code language: Python (python)

请注意,您可以使用以下照片并将其放入图片文件夹中进行测试。

在 main 函数中,我们调用该函数来更新 id 为 144 的作者的照片列。为了验证结果,我们从表中选择数据。update_blob()authors

SELECT * FROM authorsWHERE id = 144;Code language: Python (python)

它按预期工作。

在 Python 中读取 BLOB 数据

在此示例中,我们从表中选择 BLOB 数据并将其写入文件。authors

首先,开发一个将二进制数据写入文件的函数:write_file()

def write_file(data, filename):    with open(filename, 'wb') as f:        f.write(data)Code language: Python (python)

其次,创建一个名为 的新函数:read_blob()

def read_blob(author_id, filename):    # select photo column of a specific author    query = "SELECT photo FROM authors WHERE id = %s"    # read database configuration    db_config = read_db_config()    try:        # query blob data form the authors table        conn = MySQLConnection(**db_config)        cursor = conn.cursor()        cursor.execute(query, (author_id,))        photo = cursor.fetchone()[0]        # write blob data into a file        write_file(photo, filename)    except Error as e:        print(e)    finally:        cursor.close()        conn.close()Code language: Python (python)

该函数从表中读取数据,并将其写入参数指定的文件中。read_blob()BLOBauthorsfilename

代码很简单:

首先,编写一个检索特定作者照片的 SELECT 语句。其次,通过调用函数获取数据库配置。read_db_config()第三,连接到数据库,实例化游标,然后执行查询。收到数据后,我们使用函数将其写入由 .BLOBwrite_file()filename最后,关闭游标和数据库连接。

以下代码测试该函数:read_blob()

def main():    read_blob(144,"output\garth_stein.jpg")if __name__ == '__main__':    main()Code language: Python (python)

如果您打开项目中的输出文件夹并在那里看到图片,则表示您已成功从数据库中读取 。BLOB

在本教程中,我们向您展示了如何使用MySQL Connector / API从Python更新和读取MySQL中的BLOB数据。

标签: #python读取blob