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
相关文章推荐
- PythonStock(5):使用 dataTable+python 实现服务端多字段排序
- PythonStock(7):使用 dataTable+Editor+python+Tornado 实现数据通用CRUD
- 使用Python的Tornado框架实现一个简单的WebQQ机器人
- 使用Python的web.py框架实现类似Django的ORM查询的教程
- 纯python实现的web: tornado性能测试以及实际使用解析
- 使用Python的Tornado框架实现一个Web端图书展示页面
- Python使用Com组件及Access查询分析类实现
- 使用Python创建MySQL数据库实现字段动态增加以及动态的插入数据
- 使用Python创建MySQL数据库实现字段动态添加以及动态的插入数据
- 使用linq机制 实现datatable连表查询 结果赋值到一个新的datatable
- 使用Python和Splinter实现12306火车票查询与抢票
- python使用epoll实现的服务端例子
- 使用反射机制实现实体列表到DataTable的深层字段转换
- python查询数据库所有表名和字段,使用SQLAlchemy查询所有表名
- Python实现Sqlite将字段当做索引进行查询的方法
- python使用urllib模块和pyquery实现阿里巴巴排名查询
- Python使用Com组件及Access查询分析类实现
- 使用ADF-BC 实现查询功能之六:使用Popup组件实现全字段查询
- Python实现Sqlite将字段当做索引进行查询的方法
- 在Python3下使用tornado和SQLAlchemy实现一个简单的MVC网站