1、接口开发,根据不同查询条件返回数据库查询结果

import flask
import tools
import json server = flask.Flask(__name__)
#新建一个服务,把当前这个python文件当做一个服务 @server.route('/api/stu')
def get_stu():
"""
获取学生信息接口
:return: 返回从数据库中查询到符合查询条件的信息
"""
username = flask.request.values.get('name') # 默认get不到的话,返回的值就是None
age = flask.request.values.get('age')
if username and age: # 判断用户名和密码都存在
# 用户名和密码符合条件的
sql = "select * from app_student where name='%s' and age='%s'" % (username, age)
elif not username and age: # 用户名为空,查询符合年龄条件的数据
sql = "select * from app_student where age='%s'" % age
elif username and not age: # 年龄为空,查询符合用户名条件的数据
sql = "select * from app_student where name='%s'" % username
else: # 没有搜索条件,默认返回所有数据
sql = "select * from app_student"
res = tools.my_db2(sql) # 调用tools中的my_db2函数,执行sql语句,返回查询结果
# 返回执行结果,将结果转成json格式
return json.dumps(res,ensure_ascii=False,indent=4) server.run(host='0.0.0.0', port=8999, debug=True)

2、接口开发 返回session_id

import json
import time
import tools
import flask
server = flask.Flask(__name__) import nnlog # 1、导入第三方模块nnlog
log = nnlog.Logger('book_server.log') # 添加一个日志文件 @server.route('/api/login',methods=['get','post']) # 接口访问既可以用get方法也可以用post方法
def login():
"""
登录接口,返回session_id 日志打印
:return:
"""
uname = flask.request.values.get('username')
pd = flask.request.values.get('passwd')
sql = 'select * from app_myuser where username="%s"'%uname
log.debug('登录执行的sql是:%s'%sql)
res = tools.my_db(sql) # 调用tools下的my_db函数,返回符合查询条件的一条结果
if res: # 查询结果存在
if tools.my_md5(pd) == res.get('passwd'): # 判断密码是否正确
# 调用tools下的my_md5函数对用户名进行加密
# 因为使用用户名MD5加密后,每一次失效后加密的结果还是一样的,
# 所以在用户名后面 拼了一个当前时间戳str(time.time()
uname_md5 = tools.my_md5(uname+str(time.time()))
# uname_md5 = tools.my_md5(uname)
key='session:%s'%(uname_md5) # redis中的key值就是加密后的用户名
# redis中的value值 字典格式
user_info = {'user_id':res.get('id'),'user_name':uname}
r = tools.get_redis() # 调用tools下的连接redis函数 连接redis
log.debug('连接redis成功')
# 将 key值 value值,过期时间写入redis
# 因为user_info是字典格式,需要转换成json串格式才能存入redis
r.set(key,json.dumps(user_info),SESSION_EXPIRE = 60*60*1) #SESSION_EXPIRE 设置过期时间
# 接口返回的结果都是json的格式
# 在结果中返回相应的数据,返回
# 'login_time':time.strftime('%Y-%m-%d %H:%M:%S') 以格式化好的时间打印当前时间
res = {"code":0,"msg":"登录成功!",'session_id':uname_md5,
'login_time':time.strftime('%Y-%m-%d %H:%M:%S')}
log.warning('%s 用户登陆成功'%uname)
else: # 密码不正确时返回的结果
res = {"code":1,"msg":"密码错误!"}
else: # 查询结果不存在
log.warning('%s用户不存在'%uname)
res = {'code':2,"msg":"用户不存在"} # 返回的结果res是字典格式,需要转化成json格式
return json.dumps(res,ensure_ascii=False)

3、写一个校验session_id的函数,供后面的每个接口校验session_id使用

from . import tools
import json
def check_session(session_id):
"""
校验session是否过期
:param session_id: 传入的session
:return: session是否过期,返回session_id
"""
session_tag = False # SESSION是否失效的标识
r = tools.get_redis() # 连接redis
# 从redis中获取session_id,因为存的时候前面加了 session: ,所以获取的时候也得在前面加上
res = r.get('session:'+session_id)
if res: # 判断是否存在session_id
session_tag = True # 将session_tag 置为True,表示session还没有失效
data = json.loads(res) # 把json转成字典
else: # 不存在session_id 让用户重新登录
data = {'code':4,'msg':'请登录!'}
return session_tag,data # 返回两个参数,一个session_id是否过期,一个返回

8-1 python 接口开发(提供数据、返回session_id)的更多相关文章

  1. 7-4 python 接口开发(提供mock服务)

    1.登录接口开发(数据存在数据库中)  接口开发做mock(模拟功能) tools.py import pymysql def my_db(sql): conn = pymysql.connect(h ...

  2. Python接口开发小知识

    关于数据库设计 接口开发多学习数据库表操作,这是要点 不存在删除数据,每个可能被删除数据的表加一个is_active属性 不同的表可以有多个相同的字段,字段属性少用禁止非空 不要设置太多主外键(高内聚 ...

  3. Python接口开发

    一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站.web服务. 用flask开发接口的流程为: 1.定义一个server server=flask.Flask(__ ...

  4. python 接口开发(一)

    cmd中,提示pip版本太低,先升级pip   pip install --upgrade pip (pip,安装和管理python扩展包的工具) cmd下,pip,出现详细信息证明装成功了 pip ...

  5. 每天进步一点点——Ganglia的Python扩展模块开发

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701245 注:本文涉及到的代码都在centos 6.5 64bit系统上通过验证,Gan ...

  6. python语言(六)mock接口开发、发邮件、写日志、新Excel操作

    一.urllib模块 urllib模块是一个标准模块,直接import urllib即可,在python3里面只有urllib模块,在python2里面有urllib模块和urllib2模块. url ...

  7. Python(七) —— mock接口开发

    mock接口开发 接口开发有很多框架,诸如 Django,flask,相比较而言,flask 是轻量级web开发框架,用来开发 mock 接口的不二之选.那你可能会问,什么叫 mock 接口呢?moc ...

  8. 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言

    前    言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...

  9. python之接口开发基础知识

    一.开发接口的作用 1.mock 服务:在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功.支付失败. 2.了解接口是如何实现的:数据交互.数据返回 ...

随机推荐

  1. asp.net 单元测试(转)

    最早接触单元测试是看了极限编程相关资料里边讲的测试驱动开发,然后下载了Nunit研究了一下,但并没产生多大的触动,因为那个时候做的都是些时间紧任务重的事情,对于单元测试的直接感觉就是有可能比较费时间. ...

  2. supermarket SSM

    1.数据库 2.整体空架构(jar包) 3.工程依赖 24节点 build节点 <properties> </project.build.sourceEncoding> < ...

  3. oracle账户密码过期,修改为无限制

    查看用户的proifle是哪个,一般是default: sql>SELECT username,PROFILE FROM dba_users; 查看指定概要文件(如default)的密码有效期设 ...

  4. Day3 Form表单

    Day3  Form表单 一.form表单 :提交数据    表单在网页中主要负责数据采集功能,它用<form>标签定义.    用户输入的信息都要包含在form标签中,点击提交后,< ...

  5. TP5.0搭建restful API 应用

    1.配置环境变量,如果没配置会显示如下错误. 配置方法 1)右键此电脑-> 属性-> 高级系统设置->环境变量->Path 2)在Path后加上php目录的名称 如:E:\PH ...

  6. ArcGIS Engine中的Symbols详解(转)

    本文来源:http://blog.csdn.net/mengdong_zy/article/details/8980842 原文如下: Symbols Symbol level drawing Joi ...

  7. struts 上传文件 Dynavalidatorform 实例

    一.相关jar包     一个空struts工程的jar包:    另上传文件的两个jar包: 二.页面 1.上传页面upload.jsp <%@ page language="jav ...

  8. linux下使用iperf测试服务器带宽

    准备工具 1.2台Linux服务器(要求其中至少1台主机为腾讯云主机,另外一台任意主机均可,确保2台主机可以互相访问即可)2.Iperf软件为专业网络性能测试工具. 测试目标 上海地区主机外网带宽是否 ...

  9. ES6相关特性(解构赋值)

    解构赋值:本质上是一种匹配模式,等号两边的模式相同,则左边的变量可以被赋予对应的值. 注意:null & undefined 不能解构赋值!!! 数组的解构赋值: let [a,[[b],c] ...

  10. 音乐代码 (DNF天空之城、欢乐颂)。

    太感人了 DNF天空之城 #include <cstdio> #include <windows.h> #define qdo 262 #define qre 294 #def ...