title: Dash App call back append new entry in data frame and replace if matches with any previous entry
body: <p>I am trying to build a dash app which takes input from users and append each entry in the data frame, but it's replacing the old entry and generating a new one. I am not sure what's wrong in the callback.
  also trying to build a logic if the user entry matches with any row of data frame then only it will replace else append.</p>
  
  <p>your help will be much appreaciated:</p>
  
  <pre><code>@app.callback(Output('save-query', 'children'),
                [Input('save', 'n_clicks')],
                [State('ad_account_id', 'value'),
                 State('app_id', 'value'),
                 State('access_token', 'value'),
                 State('app_secret', 'value'),
                 State('metrics', 'value'),
                 State('breakdown', 'value'),
                 State('start-date', 'date'),
                 State('end-date', 'date'),
                 State('save-as', 'value')
                 ],
                )
  def save_query(clicks, ad_account_id, app_id, access_token, app_secret, metrics, breakdown,
                 start_date, end_date, save):
      if clicks is not None:
          my_ad_account = ad_account_id
          my_app_id = app_id
          my_access_token = access_token
          my_app_secret = app_secret
          my_metrics = metrics
          my_breakdown = breakdown
          my_start_date = start_date
          my_end_date = end_date
          my_save = str.lower(save)
          data = [[my_save, my_ad_account, my_app_id, my_access_token, my_app_secret, my_metrics, my_breakdown,
                   my_start_date,
                   my_end_date]]
          df = pd.DataFrame(data, columns=['report_name', 'ad_account', 'app_id', 'access_token',
                                           'app_secret', 'metrics', 'breakdown',
                                           'start_date', 'end_date'])
  
          dff = df.append(df)
  
          return html.Div([
              dash_table.DataTable(
                  css=[{'selector': '.row',
                        'rule': 'margin: 0; white-space: inherit; overflow: inherit; text-overflow: inherit;'}],
                  id='table',
                  columns=[{"name": i, "id": i} for i in dff.columns],
                  data=dff.to_dict("rows"), )],
              style={'margin-top': 30, 'display': 'inline-block', 'margin-left': 20, 'width': '100%'})
  </code></pre>