您的位置:首页 > 编程语言 > Python开发

PythonStock(6):使用 dataTable+python+Tornado 实现服务端多字段查询

2017-09-19 16:00 639 查看

前言

使用Python开发一个股票项目。

项目地址:

https://github.com/pythonstock/stock

相关资料:

http://blog.csdn.net/freewebsys/article/category/7076584

主要使用开发语言是python。

使用的lib库是pandas,tushare,TensorFlow,tornado等。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78031100未经博主允许不得转载。

博主地址是:http://blog.csdn.net/freewebsys

1,使用DataTable查询数据

参考文档:

https://datatables.net/examples/api/regex.html

之前几篇已经把DataTable都弄明白了。

现在要把最后的一个数据查询弄好。可以将字段进行filter查询。

2,增加filter查询

开启filter插件:

"bFilter": true,


但是页面上多两个查询输入框,不好看了。

<style>
#dynamic-table_filter {display: none;}
</style>


不显示就行了。然后循环显示:

<div class="row">
{% for index,element in enumerate(stockWeb.columns) %}
<div class="col-md-4" id="filter_col{{ index+1 }}" data-column="{{ index }}">
{{ stockWeb.column_names[index] }}  
<!-- Column - {{ stockWeb.column_names[index] }} - {{ element }} -->
<input type="text" class="column_filter input-group-sm form-control" id="col{{ index }}_filter">
</div>
{% end %}
</div>


使用tornado的模板显示所有的输入字段。

增加按钮点击事件:

$('input.column_filter').on( 'keyup click', function () {
var i =  $(this).parents('div').attr('data-column') ;
console.log(i,"val:",$(this).val());
myTable.column(i).search(
$(this).val()
).draw();
});


使用dataTable的search方法,这个方法可以记住之前输入的字段。

并不用每次都循环全部的input。在设计上就已经存储了其他字段的数据。

在后台处理:

search_by_column = []
search_by_data = []

# 返回search字段。
for item, val in self.request.arguments.items():
# logging.info("item: %s, val: %s" % (item, val))
if str(item).startswith("columns[") and str(item).endswith("[search][value]"):
logging.info("item: %s, val: %s" % (item, val))
str_idx = item.replace("columns[", "").replace("][search][value]", "")
int_idx = int(str_idx)
# 找到字符串
str_val = val[0].decode("utf-8")
if str_val != "":  # 字符串。
search_by_column.append(stock_web.columns[int_idx])
search_by_data.append(val[0].decode("utf-8"))  # bytes转换字符串

# 打印日志。
search_sql = ""
search_idx = 0
logging.info(search_by_column)
logging.info(search_by_data)
for item in search_by_column:
val = search_by_data[search_idx]
logging.info("idx: %s, column: %s, value: %s " % (search_idx, item, val))
# 查询sql
if search_idx == 0:
search_sql = " WHERE %s = '%s' " % (item, val)
else:
search_sql = search_sql + " AND %s = '%s' " % (item, val)
search_idx = search_idx + 1


在数据中返回样式:

item: columns[0][search][value], val: [b'1989-02-01']
item: columns[1][search][value], val: [b'']
item: columns[2][search][value], val: [b'']


3,显示效果



按照每个数据表生成查询



查询出匹配日期的数据



支持多个字段进行精确查询

4,总结

目前dataTable 的功能研究就算是告一段落了。

该研究的都研究明白了。可以成为一个完整的数据报表了。

有查询,排序,分页。对与股票数据的基本操作够用了。

dataTable 是一个做报表展示的丰富的类库,有很多插件。

使用起来也非常的方便。

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/78031100 未经博主允许不得转载。

博主地址是:http://blog.csdn.net/freewebsys

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tornado python 股票