zoukankan      html  css  js  c++  java
  • 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')

  • 相关阅读:
    MarkDown语法
    AxureRP 序列号
    数据库选型相关
    linux 防火墙
    SpringMVC控制器方法参数传入的ModelMap 和Model类型有啥区别
    2017中国软件技术大会参会总结
    SpringMVC的Model ModeMap ModelAndView @ModelAttribute @SessionAttribute区分
    mybatis调用oracle存储过程 out游标类型参数 如何赋给java map
    mybatis 调用 oracle 存储过程 select into 无记录时NO_DATA_FOUND异常处理分析
    mybatis 调用oracle存储过程如何返回out参数值
  • 原文地址:https://www.cnblogs.com/sasalei/p/7843601.html
Copyright © 2011-2022 走看看