如何让 Bokeh 服务器显示 DataTable
How to get a Bokeh Server to display a DataTable
我可以让 DataTable 毫无问题地显示在 Jupyter Notebook 中。但我无法通过服务器 (curdoc().add_root()) 显示它。当我尝试访问它时,服务器 window 没有出现任何错误,浏览器上只有一个空白页面。我只看到以下内容:
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
下面是服务器 运行,当在笔记本中时,它被替换为显示它所需的调用(output_notebook(), show(layout)):
import pandas as pd
from bokeh.plotting import Figure
from bokeh.models import ColumnDataSource, TextInput, Button, Panel, Tabs, Label, DataTable, TableColumn
from bokeh.layouts import Row, Column, widgetbox
from bokeh.io import curdoc, show, output_notebook, gridplot
from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://username:password@domain.local:5432/dbname')
def main():
layout = gridplot([[retreive_descriptions()]])
curdoc().add_root(layout)
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
我正在使用 Python 3.4.2 和 Bokeh Server 版本 0.12.5。我对此还很陌生,所以对于为什么它可能没有显示的任何帮助表示赞赏。
好像你不能用散景服务器调用主函数内的curdoc函数。 main.py 必须在文件末尾具有 curdoc 函数。这有效。
导入 pandas 作为 pd
来自 bokeh.plotting 导入图
from bokeh.models import ColumnDataSource, TextInput, Button, Panel, Tabs, Label, DataTable, TableColumn
来自 bokeh.layouts 导入行、列、小部件框
来自 bokeh.io import curdoc, show, output_notebook, gridplot
从 sqlalchemy 导入 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()]]))
我可以让 DataTable 毫无问题地显示在 Jupyter Notebook 中。但我无法通过服务器 (curdoc().add_root()) 显示它。当我尝试访问它时,服务器 window 没有出现任何错误,浏览器上只有一个空白页面。我只看到以下内容:
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
下面是服务器 运行,当在笔记本中时,它被替换为显示它所需的调用(output_notebook(), show(layout)):
import pandas as pd
from bokeh.plotting import Figure
from bokeh.models import ColumnDataSource, TextInput, Button, Panel, Tabs, Label, DataTable, TableColumn
from bokeh.layouts import Row, Column, widgetbox
from bokeh.io import curdoc, show, output_notebook, gridplot
from sqlalchemy import create_engine
engine = create_engine('postgresql+psycopg2://username:password@domain.local:5432/dbname')
def main():
layout = gridplot([[retreive_descriptions()]])
curdoc().add_root(layout)
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
我正在使用 Python 3.4.2 和 Bokeh Server 版本 0.12.5。我对此还很陌生,所以对于为什么它可能没有显示的任何帮助表示赞赏。
好像你不能用散景服务器调用主函数内的curdoc函数。 main.py 必须在文件末尾具有 curdoc 函数。这有效。
导入 pandas 作为 pd 来自 bokeh.plotting 导入图 from bokeh.models import ColumnDataSource, TextInput, Button, Panel, Tabs, Label, DataTable, TableColumn 来自 bokeh.layouts 导入行、列、小部件框 来自 bokeh.io import curdoc, show, output_notebook, gridplot 从 sqlalchemy 导入 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()]]))