首先,确保数据库表中BLOB字段的数据类型为BLOB或LONGBLOB。然后,使用准备语句来插入BLOB数据,以防止SQL注入攻击,如下所示:
import mysql.connector
import os
# 连接数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="mydatabase"
)
# 获取BLOB数据
with open("image.jpg", "rb") as f:
blob_data = f.read()
# 创建准备语句
mycursor = mydb.cursor(prepared=True)
sql = "INSERT INTO images (id, image_data) VALUES (%s, %s)"
# 执行准备语句
val = (1, blob_data)
mycursor.execute(sql, val)
# 提交更改
mydb.commit()
在上面的示例中,我们首先打开一个文件(例如图像文件)并读取BLOB数据。然后,使用准备语句创建SQL查询,其中我们使用% s作为占位符。最后,我们将数据传递给executemethod并提交更改。
此外,可以尝试使用二进制模式打开文件来读取BLOB数据,如下所示:
with open("image.jpg", "rb") as f:
blob_data = f.read()
这确保在读取数据时不会发生字符转换错误。
如果以上步骤仍然无法解决问题,则可以尝试将BLOB数据拆分为较小的块进行插入。