Which Sqlalchemy Column Type Should Be Used For Binary Data?
Solution 1:
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.
Solution 2:
I would not recommend storing the audio files in a database, you should store them in files then store the file paths in the database, this post discuses storing binary data in a database.
So when a file is uploaded you can use the id of the database row as the file name and then read it from disk back to the client. this also allows easier partial reading of the file when you are streaming audio (HTTP 206), you will also need to store the mime-type of the audio in the database if you are working with more than one audio format, and if you want to preserve the original filename you need to store that also.
Post a Comment for "Which Sqlalchemy Column Type Should Be Used For Binary Data?"