如何让Bokeh服务器显示DataTable

时间:2017-04-23 06:21:50

标签: python-3.x bokeh

我可以让DataTable显示在Jupyter笔记本中而不会出现任何问题。但是我无法通过服务器(curdoc()。add_root())来显示它。当我尝试访问它时,我没有在服务器窗口中出现任何错误,只是浏览器上的空白页面。我只看到以下内容:

Store::whereHas('user', function($q) use($username) {
        $q->where('name', 'like', '%'.$username.'%');
    })->paginate(5);

下面是服务器正在运行的内容,以及在笔记本中它被替换为显示它所需的调用(output_notebook(),show(layout)):

2017-04-23 16:07:51,188 Starting Bokeh server on port 5006 with applications at paths ['/myapp']
2017-04-23 16:07:51,188 Starting Bokeh server with process id: 7484
2017-04-23 16:07:55,365 200 GET /myapp (172.17.13.2) 188.14ms
2017-04-23 16:07:55,887 WebSocket connection opened
2017-04-23 16:07:55,888 ServerConnection created

我正在使用Python 3.4.2和Bokeh Server版本0.12.5。我对此很新,所以任何帮助都会被理解为什么它可能不会显示。

1 个答案:

答案 0 :(得分:1)

似乎你无法使用散景服务器调用main函数中的curdoc函数。 main.py必须在文件末尾有curdoc函数。这很有用。

将pandas导入为pd 来自bokeh.plotting导入图 来自bokeh.models导入ColumnDataSource,TextInput,Button,Panel,Tabs,Label,DataTable,TableColumn 来自bokeh.layouts导入Row,Column,widgetbox 来自bokeh.io import curdoc,show,output_notebook,gridplot 来自sqlalchemy import create_engine

engine = create_engine('postgresql+psycopg2://username:password@domain.local:5432/dbname')

def retreive_descriptions():
    df = pd.read_sql(sql='SELECT description from public."Description_Categories" WHERE category=\'Unknown\'', con=engine)

    cds = ColumnDataSource(df)

    columns = [TableColumn(field='description', title='Description'),TableColumn(field='category', title='Category')]

    cat_data = DataTable(source=cds, columns=columns, editable=True)

    return cat_data

curdoc().add_root(gridplot([[retreive_descriptions()]]))