2017-04-23 19 views
0

DataTableをJupyter Notebookに問題なく表示させることができます。しかし、私はそれをサーバー経由で表示することができませんでした(curdoc()。add_root())。私はそれにアクセスしようとすると、私はサーバーのウィンドウとブラウザ上の空白のページでエラーを取得しません。以下はDataTableを表示するためのBokehサーバーの入手方法

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()、ショー(レイアウト))、それを表示するために必要な呼び出しに置き換えられていますときです::

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:[email protected]: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を使用しています。私はこれをかなり新しくしているので、それが表示されない理由があれば、どんな助けにも感謝しています。

+0

から をgridplot。 DataTable/gridplotの表示に問題があります。 – Aklys

答えて

1

bokehサーバーでメイン関数内のcurdoc関数を呼び出すことはできないようです。 main.pyは、ファイルの最後にcurdoc関数を持っていなければなりません。これはうまくいった。 bokeh.modelsからインポート図 をbokeh.plottingからPD として

輸入パンダはColumnDataSource、TextInputコントロール、ボタン、パネル、タブ、ラベル、データテーブル、bokeh.layouts輸入行からTableColumnの 、柱、ボケ味からはWidgetbox をインポート.IOインポートcurdoc、ショーは、output_notebook、また、私は、現在、問題なくボケサーバー上の正常な数値をロードすることができるよSQLAlchemyの輸入create_engine

engine = create_engine('postgresql+psycopg2://username:[email protected]: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()]])) 
+0

Bokehサーバーはサーバーアプリケーションの実行中に '__name__'を設定しないので、「メインチェック」は失敗します(つまり実行されません)。 'curdoc'は最後にある必要はなく、メインチェックには入っていない必要があります。 – bigreddot

+0

理由を明確にしてくれてありがとう、私はまだ細かい点のいくつかのハングを取得しています。そして、結局私はその特定のコードの流れを意味しました。 – Aklys

+0

Bokehサーバ*は '__name__'を設定する必要がありますが、まず調査が必要です。議論するGHに関する問題を自由に開くことができます:https://github.com/bokeh/bokeh/issues – bigreddot

関連する問題