На самом деле я пытаюсь сохранить аудиофайл по определенному пути, а затем удалить сам файл, а затем всякий раз, когда мне понадобится песня, я могу получить ее с помощью Python и базы данных, но получить доступ к аудиоданным, не загружая их, просто получить аудиоданные в формате mp3, так как я позже воспроизведу песню с помощью pygame, но сначала мне придется разобраться с другой историей база данных
Ниже приведен код для хранения файла внутри базы данных:
Код: Выделить всё
import sqlite3
import io
# Connect to the SQLite database (create a new one if it doesn't exist)
conn = sqlite3.connect('audio_database.db')
cursor = conn.cursor()
# Create a table for audio data
cursor.execute('''
CREATE TABLE IF NOT EXISTS audio_data (
id INTEGER PRIMARY KEY,
filename TEXT,
audio_blob BLOB,
duration REAL,
sample_rate INTEGER,
other_info TEXT
)
''')
# Read the MP3 file and store it in a BytesIO object
with open('C:/songs/sample.mp3', 'rb') as mp3_file:
audio_content = mp3_file.read()
audio_blob = io.BytesIO(audio_content)
# Insert sample data (you can replace this with your actual data)
cursor.execute('''
INSERT INTO audio_data (filename, audio_blob, duration, sample_rate, other_info)
VALUES (?, ?, ?, ?, ?)
''', ('sample.mp3', audio_blob.read(), 120.5, 44100, 'Additional text data'))
# Commit changes and close the connection
conn.commit()
conn.close()
Код: Выделить всё
import sqlite3
import io
import base64
# Connect to the database
conn = sqlite3.connect('audio_database.db')
cursor = conn.cursor()
filename = 'sample.mp3'
# Fetch the audio data
cursor.execute('SELECT audio_blob FROM audio_data WHERE filename = ?', (filename,))
result = cursor.fetchone()
if result:
audio_blob = result[0]
# Create a BytesIO object from the retrieved binary data
audio_bytesio = io.BytesIO(audio_blob)
# Now you can use 'audio_bytesio' as needed (e.g., process or play the audio)
# For example, to decode base64 and save to a file:
with open('retrieved_audio.mp3', 'wb') as output_file:
output_file.write(base64.b64decode(audio_bytesio.read()))
print(f"Audio data for '{filename}' retrieved successfully.")
else:
print(f"Audio data for '{filename}' not found.")
# Close the connection
conn.close()
Пожалуйста, помогите!
Подробнее здесь: https://stackoverflow.com/questions/786 ... ing-python