在我的 Django 项目中从 psycopg2 升级到 psycopg3 后,我的图像(我需要将其存储为
bytea
在数据库中)不再渲染。
考虑
person = Person.objects.get(pk=1)
。然后我执行 FileResponse(person.picture, as_attachment=True)
来获取图片并将其提供给响应。
使用 psycopg2,
type(person.picture)
产生 memoryview
。使用 psycopg3,我得到 bytes
。
2 到 3 个差异文档 并未指出可能出现的问题。
将数据缓冲区包装在可迭代中,如下所示:
FileResponse((person.picture, ), as_attachment=True)
。
这还提供了向后兼容性(即适用于版本 2 和 3)。