¿Qué tipo de columna SQLAlchemy debe usarse para datos binarios?

Quiero almacenar archivos de audio en mi base de datos. Sé, por ejemplo, que las cadenas usarían db.String , integers db.Integer , pero no qué datos de audio usarían. ¿Qué tipo de datos se utiliza para almacenar este tipo de datos en 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) 

Cuando almacene datos binarios, use el tipo LargeBinary . A pesar de su nombre, es apropiado para datos binarios de cualquier tamaño.

 data = db.Column(db.LargeBinary) 

Lea los datos del archivo cargado en su vista del Frasco.

 audio.data = request.files['data'].read() 

En lugar de almacenar los datos en la base de datos, normalmente es mejor almacenar los archivos en el sistema de archivos y almacenar la ruta al archivo en la base de datos.

Dado que presumiblemente está sirviendo estos archivos, no solo almacenándolos, es mucho más eficiente servir los archivos desde el sistema de archivos. Consulte esta respuesta para obtener más información sobre el servicio de datos de la base de datos.

No recomendaría almacenar los archivos de audio en una base de datos, debería almacenarlos en archivos y luego almacenar las rutas de los archivos en la base de datos, esto publica que no se almacenan datos binarios en una base de datos.

por lo tanto, cuando se carga un archivo, puede usar el ID de la fila de la base de datos como el nombre del archivo y luego leerlo del disco al cliente. esto también permite una lectura parcial más fácil del archivo cuando está transmitiendo audio (HTTP 206), también necesitará almacenar el tipo mime del audio en la base de datos si está trabajando con más de un formato de audio, y si desea para preservar el nombre del archivo original que necesita para almacenar eso también.