前言
使用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