flask 应用程序将 sql 查询转换为 python plotly

flask app convert sql query to python plotly

我想在我的 Flask 应用程序中使用 pandas 将 SQL 查询转换为 plotly 饼图。这是我的代码:

def query_tickets_status() :
    query_result = pd.read_sql ("""
            SELECT COUNT(*)count_status, status 
            FROM tickets 
            GROUP BY status""", con = mydc_db)
    return query_result

labels_statut = query_tickets_status['status']
values_statut = query_tickets_status['count_status']

fig = go.Figure(data=[go.Pie(labels=labels_statut, values=values_statut)])
graphSuppliers = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)

return render_template('admin/dashboard.html', graphSuppliers = graphSuppliers)

这是我的模板文件。

<html>
 <body>
  <h1>Your Plotly Chart</h1>
  <div id='chart' class='chart'></div>
</body>
<script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
<script type='text/javascript'>
  var graphs = {{graphSuppliers | safe}};
  Plotly.plot('chart',graphs,{});
</script></html>

但我在这一行中遇到错误:

labels_statut = query_tickets_status['status']

TypeError: 'function' object is not subscriptable

query_tickets_statusfunction 但您将其视为 list/dictionary/DataFrame.

您必须先使用 () 来执行此函数,然后使用 [ ]dictionary/DataFrame 获取值(此函数 returns)

result = query_tickets_status()

labels_statut = result['status']
values_statut = result['count_status']

最终你可以直接使用 all 而无需创建函数 query_tickets_status()


query_result = pd.read_sql ("""
        SELECT COUNT(*)count_status, status 
        FROM tickets 
        GROUP BY status""", con = mydc_db)

labels_statut = query_result['status']
values_statut = query_result['count_status']