一 写mysql

场景:自动化用例中需要构造数据,写入redis

  1. 表中已有该primary_key的记录,在现有基础上更新字段
  2. 表中无该记录,需要插入
  1. # 请求传入table字段,db.table,context为要添加的字段等,一般为json或dict
  2. def add_table(context,table):
  3. # 获取db table及primary_id
  4. table_name = table
  5. db_name = 'default' #默认的库名
  6. if "." in table:
  7. db_name = table.split('.')[]
  8. table_name = table.split('.')[]
  9. else:
  10. table = 'advert_dsp.'+table_name
    # 得到该表的primary_key
  11. sql = "select column_name from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where table_name = '%s' and constraint_name = 'PRIMARY'" % (table_name)
  12. primary_key = command(db_name,sql)[].get("column_name")
  13. # 若请求字段有primary_key,则指定记录操作
  14. result =
  15. context.text = eval(context.text) if context.text else None
  16. primary_value = context.text.get(primary_key) if (primary_key in context.text) else
  17. if primary_value:
  18. result = command(db_name,'select * from %s where %s=%s'%(table_name,primary_key,primary_value))
    """
    # 替换一些常量,可有可无
  19. for k,v in context.text.items():
  20. if v in AutoTest:
  21. context.text[k] = AutoTest.get(v)
    """
    # 场景1,表中已有对应记录,现有基础上更新
  22. if result:
  23. param = dict_to_set(context.text,",")
  24. #param = urllib.unquote(urllib.parse.urlencode(context.text).replace("&", ","))
  25. if param:
  26. sql_update = 'update %s set %s where %s=%s'%(table_name,param,primary_key,primary_value)
  27. command(db_name,sql_update)
  28. # 场景2,表中无对应记录,插入新数据
  29. else:
  30. context.params = DbData(**context.text).params[table] #与默认值列表整合一下,补充默认值
    # 要插入的value中的双引号需要转义,dict.values是会单双引号配合,所以手动处理一下
  31. value_list = []
  32. for k, v in context.params.items():
  33. v = v.replace('"', '\\\"') if isinstance(v, str) else v
  34. value_list.append(str(v))
  35. values = '"' + '", "'.join(value_list) + '"'
  36. qmarks = ', '.join(['%s'] * len(context.params))
  37. cols = ', '.join(context.params.keys())
    # 可行方案
  38. sql = 'insert into '+table_name+'(%s) values(%s)' % (cols, values)
  39. command(db_name,sql)
    # 报错方案
         sql = 'insert into '+table_name+'(%s) values(%s)' % (cols, qmarks)
    command(db_name,sql,values)
  1.  

报错方案:用的是msyql的execute(sql, param)

不知道为什么会报错,一样的key和value,方案1就正常,方案2就报错了:not enough arguments for format string

二  使用 flask mock 一个小服务

场景:要写一个mock服务或者其他

  1. # -*- coding:utf- -*-
  2.  
  3. from flask import Flask
  4. from flask import request
  5. import sys,json,md5
  6.  
  7. reload(sys)
  8. sys.setdefaultencoding("utf-8")
  9.  
  10. app = Flask(__name__)
  11. @app.route('/others/getSignature',methods=['GET']) //域名后的path,是个GET服务
  12. def get_sig():
  13. project = request.args.get('project') # 处理查询
  14. path = request.args.get('path')
  15. reqValue = eval(request.args.get('reqValue'))
  16. sig = ''
  17. str_request = ''
  18. timestamp = ''
  19. if project == 'meipai':
  20. secret_key = "bdaefd747c7d594f"
  21. request_value = sorted(reqValue.iteritems(),key = lambda asd:str(asd[]))
  22. for key in request_value:
  23. str_request = str_request + str(key[])
  24. str_temp = path + str_request + secret_key + timestamp
  25. m = md5.new()
  26. m.update(str_temp)
  27. tmp = m.hexdigest()
  28. for i in range():
  29. pos = i*
  30. sig += tmp[pos+]+tmp[pos]
  31. return sig
  32.  
  33. if __name__ == '__main__':
  34. app.run(debug=True,host='192.168.99.31',port=)

python小知识点汇总的更多相关文章

  1. python小知识点总结

    小知识点总结 1.python2和python3的区别   python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...

  2. 小白到大神,Python 密集知识点汇总

    Python 基础 1. 变量 你可以把变量想象成一个用来存储值的单词.我们看个例子. Python 中定义一个变量并为它赋值是很容易的.假如你想存储数字 1 到变量 "one" ...

  3. Python小问题汇总

    现在的时间适合写点最近的小总结,这中间涉及到python/git等问题,我就从python先说起吧. 一.Python 1. Python的异常处理 因为想到自己不断尝试写小程序的话会用到抛出异常信息 ...

  4. Python小知识点(3)--装饰器

    (1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func): def done(*args,**kwargs): star ...

  5. 一、Python概念知识点汇总

    一.编译型语言和解释性语言的区别 二.Python的设计目标 1.一门简单直观的语言并与主要竞争者一样强大 2.开源,以便使任何人都可以为它做贡献 3.代码像纯英文那样容易理解 4.适用于短期开发的日 ...

  6. 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)

    WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了 ...

  7. python小知识点

    问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法#    s=0#    for x in a:#        ...

  8. python小知识点随笔

    可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符 1.关于字符串编码 ASCII编码 占用一个字节 二进制11111111=十进制255 所以 ...

  9. Python小知识点(5)--面向对象部分

    面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.--------------------我的手机< ...

随机推荐

  1. 基于 Egg.js 框架的 Node.js 服务构建之用户管理设计

    前言 近来公司需要构建一套 EMM(Enterprise Mobility Management)的管理平台,就这种面向企业的应用管理本身需要考虑的需求是十分复杂的,技术层面管理端和服务端构建是架构核 ...

  2. DevOps - 配置管理工具Ansible

    1 - 配置管理工具 配置管理工具(SCM,Software Configuration Management)可以将代码.软件方式实现的基础设施配置信息保存,也可以根据需求变化反复进行变更. 相关工 ...

  3. java程序cpu问题排查

    方法一: 转载:http://www.linuxhot.com/java-cpu-used-high.html 1.jps 获取Java进程的PID. 2.jstack pid >> ja ...

  4. 基于libuv的TCP设计(二)

    一.本人设想的TCP服务器有如下特性: 1.启动服务,一直监听端口. 2.有新连接(客户端)就通知用户.并把连接接收到的数据回调给用户. 3.客户端连接上后用户可在任意时间发送数据给它. 4.客户端断 ...

  5. python线程队列Queue-FIFO(35)

    之前的文章中讲解很多关于线程间通信的知识,比如:线程互斥锁lock,线程事件event,线程条件变量condition 等等,这些都是在开发中经常使用的内容,而今天继续给大家讲解一个更重要的知识点 — ...

  6. 长乐培训Day9

    T1 立方数 题目 [题目描述] 作为XX战队的狂热粉丝,MdZzZZ看到了自己心仪的队伍在半决赛落败,顿时心灰意冷.看着自己手中的从黄牛那里抢来的天价总决赛门票,MdZzZZ觉得去鸟巢已经没有意义了 ...

  7. 剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。

    1 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用 ...

  8. Linux下实现web服务器

    说明:暂时只是实现了静态网页的响应 #include <stdio.h> #include <sys/types.h> /* See NOTES */ #include < ...

  9. FFmpeg中AVFrame.linesize的含义

    在第一节FFmpeg开发教程一.FFmpeg 版 Hello world中遇到一个问题,在保存YUV的时候,粗暴的使用: fwrite(buf, 1, xsize * ysize, f); 方式去拷贝 ...

  10. CSS实现自适应分隔线的N种方法

    分割线是网页中比较常见的一类设计了,比如说知乎的更多回答 这里的自适应是指两边的横线会随着文字的个数和父级的宽度自适应 偷偷的看了一下知乎的实现,很显然是用一块白色背景覆盖的,加一点背景就露馅了 心想 ...