我正在尝试使用存储过程将图像插入到mysql中的blob列中。
Python代码:
from mysql.connector import pooling
conn_pool = pooling.MySQLConnectionPool(pool_name="PipelinePool", pool_size=5, **DB_CONFIG)
conn = conn_pool.get_connection()
cursor = conn.cursor()
with open('test.jpg', 'rb') as image_file:
image = image_file.read()
cursor.callproc('INSERT_IMG', args=(image))
conn.commit()
cursor.callproc('INSERT_IMG', args=(image))
但是这一行会产生一个错误:
mysql.connector.errors.InterfaceError: 调用存储过程失败;'utf8'编解码器无法在位置0处解码字节0xff:无效的起始字节
存储过程代码:
CREATE PROCEDURE `INSERT_IMG` (IN _image BLOB)
BEGIN
INSERT INTO some_table (IMAGE) VALUE (_image);
END
INSERT
语句你要编写存储过程? - tadmanBINARY
编码来提供图像。UTF-8不起作用。你可以尝试将其转换为十六进制编码,如MySQL表示法,这样可以完全避免二进制问题。请记住,在数据库中存储大块的二进制数据通常会带来很多麻烦,应该尽量避免。 - tadman