热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

bootstrap+flask+redis编写查询页面

前写过一篇关于12306信息查询页面的文章,今天重新整理一下,我用的是flask+redis,由于数据十几万都放在mysql里,即使创建索引,我的vps还是有点吃紧。
前写过一篇关于12306信息查询页面的文章,今天重新整理一下,我用的是flask+redis,由于数据十几万都放在mysql里,即使创建索引,我的vps还是有点吃紧。   redis可以做storage和cache,由于这些数据不是很重要,丢了大不了再导入一次,但是我们更在乎的是查询效率,所以redis做storage是很好的选择。
   首先把文件里的数据导入redis,raw文件里的数据是以下格式的,文件名为result.txt
    导入redis的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding: utf-8 -*-
import redis
import time

start = time.clock()

redisClient = redis.StrictRedis(host='localhost',port=6379,db=0,password='redis@123')
f = open('result.txt','r')
while True:
    line = f.readline()
    if not line:
        break
    lines = line.replace("\n","").replace("\r\n","").split("----")
    redisClient.hset(lines[0],"id",lines[0])
    redisClient.hset(lines[0],"name",lines[1])
    redisClient.hset(lines[0],"password",lines[2])
    redisClient.hset(lines[0],"email",lines[3])
    redisClient.hset(lines[0],"phone",lines[4])
f.close()

end = time.clock()

print "used:", end -start


13w数据不到一分半钟。。。
 
这里我的key都是id也就是***好,其它都是hash的数据结构形式存储的。redis的优点之一就是可以支持丰富的数据结构。登录redis,执行keys *看一下
 
ok,数据有了,那么开始上flask了,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-
from flask import Flask, request, render_template, jsonify, json
import  redis

app = Flask(__name__)

@app.route('/api/', methods=['GET'])
def scan(id):
     redis_client = redis.StrictRedis(host='127.0.0.1',port=6379,db=0,password='redis@123')
     get_key = redis_client.keys(id)
     if not get_key :
            json_result = {'id' : None}
            return json.dumps(json_result,ensure_ascii=False)
     else:
            get_key = redis_client.hmget(id,'name','password','email','phone')
            json_result = {'id'   : str(id),
                           'name' : get_key[0],
                           'pass' : get_key[1],
                           'email': get_key[2],
                           'phone': get_key[3]
                          }

            return json.dumps(json_result,ensure_ascii=False)


@app.route('/')
def index():
    return render_template('index.html')


if __name__ == '__main__':
  app.run(host='0.0.0.0', port = 8080, debug=True)


我们要查询哪个用户就把传参数给flask封装的api,这就是给接口传参即可。
什么是接口?看下面的说明理解一下。
在浏览器里输入api地址,随便传一个不存在的参数,也就是***号。
 
接口返回值为null
如果传参是存在的,就会有正确的返回值。
 
最后就是前端页面展示了,我用的是bootstrap和jquery的ajax插件。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130


  
   
   
   
   
   
   

   

   
   
   
   

   
   

   
   

  

  

   




        




   

        

            

本系统程序仅为用户确认个人信息是否已经泄露,切勿用作非法目的,否则一切后果自负!


        

   




            


好了,启动webserver,看看页面查询情况:
输入一个***号,如果存在,页面就会返回
 
如果不存在,js就会alert一个弹框。
 
是不是还比较简单,我的好友强子想了解一下如何构建,所以分享一下。。。


推荐阅读
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 字节跳动夏季招聘面试经验分享
    本文详细记录了字节跳动夏季招聘的面试经历,涵盖了一、二、三轮面试的技术问题及项目讨论,旨在为准备类似面试的求职者提供参考。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 深入解析MySQL查询优化:特定类型查询的高级策略
    本文详细探讨了MySQL中特定类型查询的优化方法,包括COUNT()查询、关联查询、LIMIT分页及UNION查询的优化技巧,旨在提高数据库查询效率。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • SpringCloud电商平台开发指南:实战案例解析
    本文详细介绍了基于SpringCloud构建的电商平台项目,涵盖了从技术选型到项目部署的全流程,旨在帮助开发者快速掌握电商平台的开发技巧。 ... [详细]
  • 本文探讨了随着并发需求的增长,MySQL数据库架构如何从简单的单一实例发展到复杂的分布式系统,以及每一步演进背后的原理和技术解决方案。 ... [详细]
  • Spring Boot 入门指南
    本文介绍了Spring Boot的基本概念及其在现代Java应用程序开发中的作用。Spring Boot旨在简化Spring应用的初始设置和开发过程,通过自动配置和约定优于配置的原则,帮助开发者快速构建基于Spring框架的应用。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • 迎接云数据库新时代:程序员如何应对变革?
    在数据无处不在的时代,数据库成为了管理和处理数据的核心工具。从早期的信息记录方式到现代的云数据库,数据库技术经历了巨大的变革。本文将探讨云数据库的特点及其对程序员的影响。 ... [详细]
  • Redis并发控制与集群管理
    本文探讨了在高并发场景下使用Redis进行并发控制的方法,以及如何通过Redis集群和可视化工具提升系统的稳定性和可维护性。 ... [详细]
  • 深入解析 Golang 中的 Cache::remember 方法实现
    本文详细探讨了如何在 Golang 中实现类似于 Laravel 的 Cache::remember 方法,通过具体的代码示例和深入的分析,帮助读者更好地理解和应用这一技术。 ... [详细]
author-avatar
飞飞鱼531
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有