You sir, are a flapping angel. Thank you. Here is a min working version of the app for anyone else that wants to let users download a pdf that was stored in a MySQL db as a BLOB.
One would have to add ones own db settings in the âdb settingsâ part
`
import dash
import dash_html_components as html
from dash.dependencies import Input, Output
from dash_extensions import Download
import pandas as pd
import mysql.connector # pip install mysql-connector-python
import base64
=========== DB SETTINGS ===========
myconn = mysql.connector.connect(host=â123.123123â, user=âsome_usernameâ, passwd=âsome_passwordâ,
database=âsome_dbâ)
===============================
req = âResearchâ
queries = âââSELECT * FROM email_display where gc_SenderName = %s;â""
df_research = pd.read_sql(queries, myconn, params=(req,))
the_blob = df_research[âGC_ATTACH_BINARYâ][0] # a pdf stored as a blob in a db
app = dash.Dash(name, prevent_initial_callbacks=True)
app.layout = html.Div(children=[
html.Br(),
html.Div([html.Button("Download pdf", id="btn"), Download(id="download")]),
html.Br(),
])
@app.callback(Output(âdownloadâ, âdataâ), [Input(âbtnâ, ân_clicksâ)])
def generate_csv(n_nlicks):
pdf_file = "Email_attachment.pdf"
content = base64.b64encode(the_blob).decode()
return dict(filename=pdf_file, content=content, base64=True)
if name == âmainâ:
app.run_server()
`
Thank you @Emil