Изображения/файлы не отображаются после обновления psycopg2 до psycopg3
После перехода с psycopg2 на psycopg3 в моем Django-проекте мои изображения (которые нужно хранить как 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).
См. также https://github.com/psycopg/psycopg/discussions/733
Это документировано в журнале изменений psycopg 3.0.17 https://www.psycopg.org/psycopg3/docs/news.html#psycopg-3-0-17:
Load bytea as bytes, not memoryview, using ctypes implementation.