csv特殊数据格式处理,传参列名,条件筛选

我们常见的csv数据都是第一行是列名,之后的每行数据对应列名。

sql常见操作:某列中的值与用户输入值相同,将这条数据取出来。

我偶然得到一个数据如下,第一行是列名,state,和年份,每行数据对是对应年份和州的人口数。

 

要求操作:用户输入年份,例如查询2011年,California 的人口数。

难点:与上面查询不同的是,列名变成了参数被传入用户传参是动态的,因此不可提前写死数据。

代码实现:

功能:允许用户web输入人口范围和年份,查找符合要求的数据

 1 @app.route('/test/', methods=['GET', 'POST'])
 2 def test():
 3     min =request.args.get('min')
 4     max =request.args.get('max')
 5     year6 = request.args.get('year6')
 6     #重点是这一句,将列名当作参数传入
 7     year7 = '"' + str(year6) + '"'
 8     min1=int(min)*100000
 9     max1=int(max)*100000
10 
11     sql = """
12     SELECT * 
13     FROM TABLE where """+year7+"""  between '"""+str(min1)+"""' and '"""+str(max1)+"""' ;
14     """
15     result = ibm_db.exec_immediate(connect_db, sql)
16     dictionary = ibm_db.fetch_both(result)
17     userlist = []
18     while dictionary != False:
19         userlist.append(dictionary)
20         dictionary = ibm_db.fetch_both(result)
33     return render_template('index.html', data=userlist)

 

前端代码展现:

想要展现的数据,可以自己在前端定义

 1   <div>
 2  
 3             <form method="GET" action="/test/">
 4                 <input type="text" placeholder="min" name="min">
 5                 <input type="text" placeholder="max" name="max">
 6                 <input type="text" placeholder="year" name="year6">
 7                 <button type="submit">search</button>
 8                 </form>
 9 
10     </div>
11 
12     {% for list in data %}
13    {{ list }}
14            {% endfor %}

 

posted @ 2020-07-19 07:57  菠菜猫  阅读(483)  评论(0编辑  收藏  举报