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. node搭环境(四)--webpack启服务运行VUE模块文件(手写简单脚手架)

    webpack启服务步骤: 1.新建空文件夹webpack-vue.在空文件夹右键点击- GIt Bath here--输入cnpm init--按程序走完会生成package.json文件 2.打开 ...

  2. ANDROID_HOME is not set and "android" command not in your PATH解决

    使用nodejs安装cordova后在项目里面添加平台时出现错误: 原因就是没有配环境变量 使用phonegap开发不仅要配JDK环境变量,还要配ADT环境变量,出现这个错误很显示就是没配ADT环境变 ...

  3. [转]javascript之数组操作

    javascript之数组操作 .数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个 ...

  4. MySQL中报错: [Err] 1146 - Table 'performance_schema.session_status' doesn't exist 解决办法

    解决办法:1.打开cmd 执行命令cd/ 进入C盘根目录2.dir 查看C盘根目录下文件夹  找到 Program Files文件夹3.cd Program Files 进入该文件夹下 再输入dir ...

  5. 《Head First 设计模式》之代理模式

    代理模式(Proxy):控制对象访问 ——为另一个对象提供一个替身或占位符来访问这个对象. 要点: 代理模式有许多变体,如:缓存代理.同步代理.防火墙代理和写入时复制代理 代理在结构上类似装饰者,但目 ...

  6. SAP常用函数

    1.获取月末最后一天日期 DATA LAST_DATE TYPE SY-DATUM. CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING day_in = sy- ...

  7. SpringCloud的学习记录(4)

    本篇基于上一篇写的, 在git上更改配置后, eureka-client如何更新. 我们只需要在配置文件中配置 spring-cloud-starter-bus-amqp; 这就是说我们需要装rabb ...

  8. 关于 Android Studio 如何连接手机调试

    第一步:设置-> 打开开发者选项,以及USB调试模式 第二步:关于手机->版本号,点击版本号会弹出提示:已经处于开发者模式,无需操作 第三步:设置->在搜索框中输入HDB,此时会弹出 ...

  9. python模块详解 shelve

    shelve模块是一个简单的k,v 将内存数据通过文件持久化的模块,可以持久化任何pickle可以支持的python数据.简单的说对 pickle的更上一层的封装. 写文件 import shelve ...

  10. Struts2_访问Web元素

    取得Map 类型的 request,session,application, HttpServletRequest,HttpSession,ServletContext的引用. 分访问 Map 类型和 ...