【发布时间】:2023-04-02 22:35:01
【问题描述】:
我有一个 Pyramid Web 应用程序,我需要使用 SQLAlchemy 将上传的文件存储到 postgresql 数据库。我已经通过带有FormData 对象的 AJAX 调用访问该文件并保存在一个变量中,但我无法将它存储到 SQLAlchemy 模型中。
我尝试过使用类似ControlFile.content = file_object.file 的方法,但出现以下错误:can't escape _io.BytesIO to binary
这是我的代码 sn-ps
数据库
CREATE TABLE "control_file"(
-- ...
"content" bytea NOT NULL
-- ...
);
SQLAlchemy
class ControlFile(BaseStatusAll):
__tablename__ = 'control_file'
content = Column(LargeBinary)
#...
金字塔
@view_config(route_name='add_file_to_control', renderer='json', request_method='POST')
def add_file(request):
file_object = request.params.get('file')
cf = ControlFile()
cf.content = file_object.file
# SQLAlchemy session
request.dbsession.add(cf)
#...
return {'status': 1}
JS
这是我用来上传文件的脚本。注意file 是一个File 对象(https://developer.mozilla.org/en-US/docs/Web/API/File)
var fd = new FormData();
fd.append("file", file);
$.ajax({
'url': '...',
'method':'POST',
'async': false,
cache: false,
contentType: false,
processData: false,
data: fd
});
【问题讨论】:
标签: python postgresql sqlalchemy pyramid