我想将音频文件存储在我的数据库中.我知道,例如,字符串将使用db.String,整数db.Integer,但不会使用音频数据.在SQLAlchemy中使用什么数据类型来存储这种类型的数据?
class Audio(db.Model):
__tablename__ = 'audio'
id = db.Column(db.Integer, primary_key=True)
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
title = db.Column(db.String(64), unique=True)
解决方法:
存储二进制数据时,请使用LargeBinary类型.尽管它的名称,它适用于任何大小的二进制数据.
data = db.Column(db.LargeBinary)
在Flask视图中读取上传文件中的数据.
audio.data = request.files['data'].read()
不是将数据存储在数据库中,通常最好将文件存储在文件系统中,并将文件的路径存储在数据库中.
由于您可能正在为这些文件提供服务,而不仅仅是存储它们,因此从文件系统提供文件效率要高得多.有关从数据库提供数据的更多讨论,请参见this answer.
标签:python,sqlalchemy,flask