在 SQLite 数据库中处理二进制数据,例如图片、视频、音频等等
在 SQLite 数据库中处理二进制数据(如图片、视频、音频等)时,可以使用 BLOB(Binary Large Object)数据类型来存储和读取这些数据。以下是使用 Python 的 sqlite3 库处理二进制数据的示例。
1、首先,确保安装了 Python 的 sqlite3 库。这是 Python 标准库的一部分,通常不需要额外安装。
2、创建一个 SQLite 数据库和一个包含 BLOB 数据类型的表。
import sqlite3 def create_table(): conn = sqlite3.connect("pidancode.db") cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS media ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, description TEXT, data BLOB NOT NULL ) """) conn.commit() conn.close() create_table()
3、定义一个函数,将二进制文件(如图片)插入到数据库中。
def insert_blob(file_path, name, description): conn = sqlite3.connect("pidancode.db") cursor = conn.cursor() with open(file_path, "rb") as file: blob_data = file.read() cursor.execute(""" INSERT INTO media (name, description, data) VALUES (?, ?, ?) """, (name, description, blob_data)) conn.commit() conn.close() file_path = "pidancode.jpg" name = "pidancode.com" description = "皮蛋编程" insert_blob(file_path, name, description)
4、从数据库中读取二进制数据,并将其写入到一个新的文件中。
def read_blob(media_id, output_file): conn = sqlite3.connect("pidancode.db") cursor = conn.cursor() cursor.execute("SELECT data FROM media WHERE id = ?", (media_id,)) blob_data = cursor.fetchone()[0] with open(output_file, "wb") as file: file.write(blob_data) conn.close() media_id = 1 output_file = "pidancode_output.jpg" read_blob(media_id, output_file)
上述代码示例首先创建了一个名为 media 的表,用于存储二进制数据。接下来,我们定义了 insert_blob 和 read_blob 函数,分别用于将二进制文件插入数据库和从数据库中读取二进制数据。最后,我们将一个名为 "pidancode.jpg" 的图片插入到数据库中,并将其读取到一个名为 "pidancode_output.jpg" 的新文件中。
相关文章