Я хочу получить обновленную таблицу из запроса sql, который используется в обратном вызове, он будет обновляться каждые несколько секунд. Однако при получении новых строк произошла ошибка. Ударили в течение некоторого времени. Любая помощь будет хороша. Ошибка: Ошибка обратного вызова при обновлении raw_data.data
Код:
import pandas as pd
import dash
import dash_table
from dash.dependencies import Output, Input
import dash_core_components as dcc
import dash_html_components as html
import plotly
import pyodbc
def connectSQLServer(driver, server, db):
connSQLServer = pyodbc.connect(
r'DRIVER={' + driver + '};'
r'SERVER=' + server + ';'
r'DATABASE=' + db + ';'
r'Trusted_Connection=yes;',
autocommit=True
)
return connSQLServer
sql_conn = connectSQLServer(
'ODBC Driver 13 for SQL Server', 'DESKTOP\SQLEXPRESS', 'display')
cursor = sql_conn.cursor()
d = {'x': [], 'y': [], 'z': [], 'a': []}
sql = 'select * from dbo.data2'
cursor.execute(sql)
myresult = cursor.fetchall()
# d = { 'x': [], 'y': [] }
for x in myresult:
d['x'].append(x[0])
d['y'].append(x[1])
d['z'].append(x[2])
d['a'].append(x[3])
df = pd.DataFrame(d)
app = dash.Dash(__name__)
app.layout = html.Div([dash_table.DataTable(id='raw_data',
columns = [{'name': i, 'id': i} for i in df.columns],
data = df.to_dict("rows"),
),
dcc.Interval(id='interval_component',
interval=1000,
n_intervals=0
)
])
d = {'x': [], 'y': [], 'z': [], 'a': []}
@app.callback(Output('raw_data', 'data'), [Input('interval_component', 'n_intervals')])
def update_table(n_intervals):
sql_conn = connectSQLServer(
'ODBC Driver 13 for SQL Server', 'DESKTOP\SQL', 'display')
cursor = sql_conn.cursor()
cursor.execute("SELECT * FROM dbo.data2")
rows = cursor.fetchall()
for x in rows:
d['x'].append(x[0])
d['y'].append(x[1])
d['z'].append(x[2])
d['a'].append(x[3])
df = pd.Dataframe(d)
return df
if __name__ == '__main__':
app.run_server(port=7000, debug=True)