Python,散景,Javascript:在回调中使用Mongodb数据库查询

我正在使用散景,并开始探索它的JavaScript和回调方面。Python,散景,Javascript:在回调中使用Mongodb数据库查询

我有一段包含日期选择器的代码: 我希望回调在触发时对mongodb数据库执行查询。 事情是,我不知道JavaScript,并需要一些指针来帮助我在正确的方向。

这是我到目前为止的代码:我想看看是否有可能与一些JavaScript以及执行一些Python代码

import pymongo 

import pandas as pd

from bokeh.layouts import column

from bokeh.models import CustomJS, DatePicker

from bokeh.plotting import figure, show, ColumnDataSource

from bokeh.io import curdoc

from bokeh.models.formatters import DatetimeTickFormatter

import datetime

p = figure(x_axis_type="datetime",plot_width=900, height=200, title="GBP")

mongo=pymongo.MongoClient()

start=datetime.datetime.today().replace(hour=0,minute=0,second=0,microsecond=0)

end=start+datetime.timedelta(hours=24)

data=pd.DataFrame.from_records(

mongo.prices["Russia Ruble"].find({"datetime":

{"$gte":start,"$lte":end}}))[["close","datetime"]]

source = ColumnDataSource(data.to_dict(orient="list"))

callback=CustomJS(args=dict(source=source),code='''

var data=source.data;

var f=cb_obj.value

start = f.replace(hour=0,minute=0,second=0,microsecond=0) # use a javacript equivalent of the python code here...

end= start +datetime.timedelta(hours=24) # use a javacript equivalent of the python code here...

data=pd.DataFrame.from_records(

mongo.prices["Russia Ruble"].find({"datetime":

{"$gte":start,"$lte":end}}))[["close","datetime"]] # use a javacript equivalent of the python code here...

source.change.emit()

''')

p.line(x = "datetime", y ="close", color="black", source=source)

datepicker=DatePicker(max_date=start,value=start)

datepicker.js_on_change("value",callback)

curdoc().add_root(column(p,datepicker))

在第一(或只是一些Python代码..)在回调,但this part of the doc似乎明确指出,这是不可能的。

所以我接受了这样一个事实,我需要学习一些JavaScript来完成我的任务,并且研究了mongo db和javascript。关于这个话题的一个简单的谷歌研究似乎表明,这would be close to what node.js is doing,但我不确定吗?散景js回调是否等同于服务器端JavaScript?然后this page(对不起,这是法语..但无法找到任何等效的英文)解释说,为了使用mongodb和node.js,我需要使用nodejs软件包管理器(npm)安装mongodb驱动程序...那里我显然已脱离轨道...

所以回顾: - 什么是执行我需要在我的javascript回调中执行的简单操作的一种好方法(例如,从所选日期创建开始时间和结束时间由datepicker,然后使用该时间范围查询我的mongoddb数据库中的数据)

回答:

你能发布一些关于你的web应用程序的更多信息以及它的服务器类型吗?

不幸的是,你只用一个回调就不能完成你想要的东西(即使你学习的是JavaScript)。

为了解释这一点,你必须了解一些关于散景效果的内幕。如果您使用独立html或使用script, div = components(plot)来嵌入散景图,那么python只是简单地创建一组定制的javascript函数,并在您的页面中嵌入一个大脚本中为您的情节序列化所有数据源。诸如“图”,“vbar”,“circle”之类的散景对象称为模型,所有模型都以javascript表示,并在生成时给出它们的数据。

仅当该脚本在生成后才与您的服务器或数据库通信。相反,回调只是修改模型已有的属性。例如,columnDataSource模型具有某些列,所有这些列都放入JavaScript中,因此您可以使用回调来更改在剧情中使用哪个列。

作为文档说:

散景的体系结构是这样的,高级别“模型对象” (代表之类的东西曲线,范围,轴,字形,等等) 在Python创建,然后转换成JSON格式, 客户端库消耗,BokehJS

如果你想使用Python,和你的数据库,让你的模型是最新的,那就是用例的背景虚化服务器。Bokeh服务器是一个可嵌入的服务器,将保持模型的所有python表示与javascript相同步。

同样每documentation:

但是,如果有可能保持在浏览器中蟒“模型对象”和 同步彼此,那么更多的附加和 强大的可能性,立即打开:

在使用计算或查询蟒蛇 这种能力的全功率Python和浏览器之间同步浏览器生成的用户界面和工具的事件作出响应是主要目的Bokeh服务器。

看看在Bokeh Server文件,看看是否有可能工作您的使用案例。

从理论上讲,你可以有一个JS函数从不同的路线获取JSON数据,并将这些数据推送到你的散景模型中,但我认为这不会起作用。 Bokeh为每个模型和模型数据点生成大量的唯一标识符,您需要查看和处理路径。

散景服务器上还有一个很棒的pycon演示文稿。它从2015年开始有点老,但对理解这些概念非常有帮助。 https://www.youtube.com/watch?v=O5OvOLK-xqQ

以上是 Python,散景,Javascript:在回调中使用Mongodb数据库查询 的全部内容, 来源链接: utcz.com/qa/257876.html

回到顶部