Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从SQL查询生成plotly数据表_Python_Sql_Datatable_Plotly Dash - Fatal编程技术网

Python 从SQL查询生成plotly数据表

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

我是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
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=[]初始化表
然后在回调中设置
值,并使用多输出传回
数据
值。我尝试过,现在更新原始数据时出现
回调错误,如下所示: