Python 从SQL查询生成plotly数据表
我是dash和python的新手,目前我正在尝试为Python 从SQL查询生成plotly数据表,python,sql,datatable,plotly-dash,Python,Sql,Datatable,Plotly Dash,我是dash和python的新手,目前我正在尝试为datatable创建一个回调,它从我的计算机上的SQL中检索。 但是,我不能这样做 知道为什么吗?我得到了这个错误: columns = [{'num': i, 'id': i} for i in data.columns],data=[] NameError: name 'data' is not defined 这里是我迄今为止所实施的 import pandas as pd import dash import dash_table
datatable
创建一个回调
,它从我的计算机上的SQL
中检索。
但是,我不能这样做
知道为什么吗?我得到了这个错误:
columns = [{'num': i, 'id': i} for i in data.columns],data=[]
NameError: name 'data' is not defined
这里是我迄今为止所实施的
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
from random import random
import plotly
import pyodbc
global data
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
app = dash.Dash()
app.layout = html.Div([dash_table.DataTable(id='raw_data',
columns = [{'num': i, 'id': i} for i in data.columns],data=[]
#data = data.to_dict('records')
),
dcc.Interval(id='interval_component',
interval=1000,
n_intervals=0
)
])
@app.callback(Output('raw_data', 'data'), [Input('interval_component', 'n_intervals')])
def update_table(n_intervals):
dataSQL = [] # set an empty list
global data
sql_conn = connectSQLServer(
'ODBC Driver 13 for SQL Server', 'DESKTOP\SQL', 'display')
cursor = sql_conn.cursor()
cursor.execute("SELECT num,ID FROM dbo.stats")
rows = cursor.fetchall()
for row in rows:
dataSQL.append(list(row))
labels = ['num', 'id']
data = pd.DataFrame.from_records(dataSQL, columns=labels)
data = data.to_dict('records')
return {'data': [data]}
if __name__ == '__main__':
app.run_server(port=5000, debug=True)
您已经设置了
输出
以传递给数据
属性,因此您的返回值应该是数据
变量,如下所示:
返回数据
通过将其放入字典,Dash正在查找数据属性的数据属性,该数据属性不存在,这就是为什么会出现数据未定义的错误。您已经设置了
输出
以传递给数据
属性,因此您的返回值应该是数据
变量,如下所示:
返回数据
通过将其放入字典,Dash正在寻找数据属性的数据属性,该属性不存在,这就是为什么您会得到数据未定义的错误。Hi,我已经尝试了,但仍然存在错误:回溯(最近一次调用):文件“app.py”,第26行,在列=[{'num':i,'id':i}代表数据列中的i],数据=[]NameError:名称“data”未定义您尚未在该回调之外定义
数据
,因此请使用列=[],数据=[]初始化表
然后在回调中设置列
值,并使用多输出传回数据
和列
值。我尝试过,现在更新原始数据时出现回调错误,如下所示:嗨,我尝试过,但仍然错误:回溯(最近一次调用):文件“app.py”,第26行,在columns=[{'num':i,'id':i}中,对于data.columns]中的i,data=[]名称错误:名称'data'未定义您尚未在该回调之外定义数据
,因此使用columns=[],data=[]初始化表
然后在回调中设置列
值,并使用多输出传回数据
和列
值。我尝试过,现在更新原始数据时出现回调错误,如下所示: