告诉我,如何将图像添加到 sqlite3 数据库?
我在网上找到了一个代码,尝试先插入一个数字,一切正常。
但是当我尝试做同样的事情,但使用图像时,会发生错误:
cur.execute(query)
sqlite3.OperationalError: near "'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x0.........0>
有一个名为 f 的数据库,它有一个名为 foods 的表,它有列:
姓名 | 能源| 照片
至此,在Photo一栏中,我已经指明了STRING类型(我不知道哪个更适合为图片指定)
在Photo一栏中,我想添加一张照片:
import sqlite3
def import_pict_binary(pict_path):
f = open(pict_path, 'rb')
pict_binary = f.read()
return pict_binary
con = sqlite3.connect("f.sqlite")
cur = con.cursor()
binary_pict = import_pict_binary('corn.jpg')
query = "UPDATE foods SET Photo = {} WHERE Name = 'Кукуруза'".format(binary_pict)
cur.execute(query)
con.commit()
告诉我我在请求中错误地指定了什么?
最好不要将图片存储在数据库本身中。通常是这样完成的。图片保存到磁盘,路径写入数据库。因此,您至少可以在不执行数据库查询的情况下显示图片。如果您仍然真的需要它,那么有 2 个选项
现在你的图片是一组字节,字段中应该有一个字符串。我马上说,如果你试图将图像的内容转换成字符串,你会破坏图像。如果是字符串,那么只能通过base64编码
将字段声明为
BLOB
并添加图像,将其字节包装在sqlite3.Binary
.例子: