我可以让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。我对此很新,所以任何帮助都会被理解为什么它可能不会显示。
答案 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()]]))