I want to store audio files in my database. I know, for example, that strings would use db.String
, integers db.Integer
, but not what audio data would use. What data type is used to store this type of data in 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)
function sqlalchemy.orm. column_property(*columns, **kwargs) Provide a column-level property for use with a mapping. Column-based properties can normally be applied to the mapper's properties dictionary using the Column element directly.
From SQLAlchemy docs: nullable – If set to the default of True, indicates the column will be rendered as allowing NULL, else it's rendered as NOT NULL. This parameter is only used when issuing CREATE TABLE statements.
PickleType. Holds Python objects, which are serialized using pickle. SchemaType. Mark a type as possibly requiring schema-level DDL for usage.
The dialect is the system SQLAlchemy uses to communicate with various types of DBAPI implementations and databases. The sections that follow contain reference documentation and notes specific to the usage of each backend, as well as notes for the various DBAPIs.
When storing binary data, use the LargeBinary
type. Despite its name, it is appropriate for any sized binary data.
data = db.Column(db.LargeBinary)
Read the data from the uploaded file in your Flask view.
audio.data = request.files['data'].read()
Rather than storing the data in the database, it's typically better to store files in the filesystem, and store the path to the file in the database.
Since you're presumably serving these files, not just storing them, it is much more efficient to serve the files from the filesystem. See this answer for more discussion on serving data from the database.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With