7-flask写接口

★内置函数
 int('123')
 float()
 string()
 tuple()
 set()
 dict(name='zdd',age=18)
 type()#查看类型
 len()#看长度,其实是元素的个数
 id()#看内存地址
 sotred()#排序
 sorted([1,0,5,9,9,3,453232,568534],reverse=True)#倒叙排列
 reversed()#反转
 isinstance(b,dict)#判断什么类型,返回true或者false
 print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真       
 print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
 print(bin(10))#十进制转二进制
 print(bool('s'))#把一个对象转换成布尔类型
 print(dir(1))#打印传入对象的可调用方法
 print(eval('[]'))#执行python代码,只能执行简单的,定义数据类型和运算
 print(exec('def a():pass'))#执行python代码
 print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
 print(map(lambda x:x>5,[1,2,3,4,5,6]))
 print(hex(111))#数字转成16进制
 print(max(111,12))#取最大值
 print(oct(111))#把数字转换成8进制
★操作excel
 读excel
 import xlrd
  book = xlrd.open_workbook('lanxia.xls')
  sheet = book.sheet_by_name('sheet1')
  rows = sheet.nrows#sheet页里面的行数
  clos = sheet.ncols#sheet页里面的列数
  print(sheet.cell(1,1).value)#通过指定行和列去获取到单元格里面的内容
  row_data = sheet.row_values(1)#获取第一行的内容
  for i in range(rows):
    print(sheet.row_values(i))#获取第几行的数据
 写excel
  import xlwt
  book  = xlwt.Workbook()#创建一个excel
  sheet = book.add_sheet('lanxia')#添加一个sheet页
  title = ['姓名','班级','住址','手机号']
  data = [
   ['孙树江','巨蟹座','中南海',110],
   ['贾梦缘','巨蟹座','紫禁城',119],
   ['老孙','天蝎座','花果山',0],
   ['光远','娜美','天上',120]
  ]
  i=0#控制列
  for j in title:
   #j是每次循环title的内容
   sheet.write(0,i,j)#0是行,不变,i是列,每次循环都要往不通的列里面写
   i+=1#每次循环的时候列都加1
  line=1#控制写的行
  for d in data:#外层循环是控制行数的
   row = 0#代表的列,列每次都变
   for dd in d:#控制列的
    sheet.write(line,row,dd)
    row+=1#列每次都要加一
   line+=1

  book.save('sjj.xls')#后缀只能用xls,要不然打不开
 
 修改excel
  from xlutils.copy import copy
  import xlrd
  import os
  #1、打一要修改的excel
  #2、再打开另一个excel
  #3、把第一个excel里面修改东西写到第二个里头
  #4、把原来的excel删掉,新的excel名改成原来的名字
  book = xlrd.open_workbook('stu.xls')
  #复制一个excel
  new_book = copy(book)#复制了一份原来的excel
  #通过获取到新的excel里面的sheet页
  sheet = new_book.get_sheet(0)#获取到第一个sheet页
  sheet.write(6, 0, 'Dandan Sun')#写入excel,第一个值是行,第二个值是列
  new_book.save('stu_new.xls')#保存新的excel,保存excel必须使用后缀名是.xls的,不是能是.xlsx的
  os.remove('stu.xls')
  os.rename('stu_new.xls','stu.xls')
★mock接口开发
   mock接口就是模拟接口的意思
   1、其他模块的接口没开发好的话,咱们可以写一个接口给mock
   2、给别人看数据的时候
★flask接口开发
import flask
from flask import request #想获取到请求参数的话,就得用这个
server = flask.Flask(__name__) #吧这个python文件当做一个web服务
def md5_passwd(str,salt='123456'):
    #satl是盐值,默认是123456
    str=str+salt
    import hashlib
    md = hashlib.md5()  # 构造一个md5对象
    md.update(str.encode())
    res = md.hexdigest()
    return res

def conn_mysql(sql):
    import pymysql
    conn = pymysql.connect(host='211.149.218.16',user='jxz',password='123456',db='jxz',charset='utf8')
    cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
    cur.execute(sql)
    res = cur.fetchone()
    conn.commit()
    cur.close()
    conn.close()
    return res
@server.route('/register',methods=['get','post'])#router里面第一个参数,是接口的路径
def reg():
    # username = request.values.get('username')#这里就是你调用接口的是传入的参数
    # password = request.values.get('password')#这里就是你调用接口的是传入的参数
    print(request.json)
    username = request.json.get("username")#入参类型是json的话,那么必须得用.json方法才能获取到数据
    password = request.json.get("password")
    if username and password:
        sql = 'select username,password from user where username="%s";'%username
        res = conn_mysql(sql)#执行sql
        if res:
            return '{"code":300,"msg":"你注册的用户已经存在"}'
        else:
            password = md5_passwd(password)#调用加密的函数
            sql = 'insert into user  (username,password) values ("%s","%s");'%(username,password)
            conn_mysql(sql)
            return '{"code":200,"msg":"注册成功!"}'
    else:
        return '{"code":938,"msg":"必填参数未填,请看接口文档!"}'

@server.route('/login')
def login():

    return '{"msg":"登录成功"}'

server.run(port=8000,debug=True,host='0.0.0.0')

 

posted on 2017-11-16 11:54  大磊爱吃又  阅读(261)  评论(0编辑  收藏  举报

导航