python - 将 PDF 添加到 sqlalchemy 数据库
问题描述
我有一个简单model
的方法,我想将 PDF 文件的二进制内容存储在一个data
属性中:
from app import db
class Model(db.Model):
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.PickleType, nullable=True)
我正在尝试将一些任意 PDF 文件添加到data
属性中,如下所示:
@app.route('/')
def index() -> str:
model = Model.query.get(1)
model.data = open('./app/static/pdf/file.pdf', 'rb')
db.session.commit()
return ''
但我收到以下错误:
sqlalchemy.exc.StatementError: (builtins.TypeError) cannot serialize '_io.BufferedReader' object
[SQL: UPDATE model SET data=? WHERE model.id = ?]
[parameters: [{'data': <_io.BufferedReader name='./app/static/pdf/file.pdf'>, 'model_id': 1}]]
请问这样做的正确方法是什么?我应该如何序列化 PDF 文件?
谢谢你的帮助 :-)
解决方案
和...之间的不同
model.data = open('./app/static/pdf/file.pdf', 'rb')
和
model.data = open('./app/static/pdf/file.pdf', 'rb').read()
是腌制文件句柄(有一些不可腌制的部分)和腌制字节数组之间的区别。
推荐阅读
- mysql - mysql 最高位 是 1 还是 0 , 列设计时为signed int
- reactjs - React 中的轮播未正确从数组的开头和结尾包裹
- vuejs2 - JS:错误:无法从 app.css 加载 CSS:错误:require 的第一个参数应该是字符串
- reactjs - 可以对所有内容使用“Box”组件吗?
- php - 无法在我的 IBM CLoud 中的 PHP Cloud Foundry 应用程序和 Postgre SQL 之间建立连接
- google-chrome - Chromium 开发工具颜色选择器在非停靠模式下不起作用
- java - 如何让 JScrollBar 滚动?
- sql - 关系代数到涉及自然连接的 SQL
- sql - 如何在sqlx中读取外键
- python - 为什么相同的价值观