一 写mysql

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

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

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

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

二  使用 flask mock 一个小服务

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

# -*- coding:utf- -*-

from flask import Flask
from flask import request
import sys,json,md5 reload(sys)
sys.setdefaultencoding("utf-8") app = Flask(__name__)
@app.route('/others/getSignature',methods=['GET']) //域名后的path,是个GET服务
def get_sig():
project = request.args.get('project') # 处理查询
path = request.args.get('path')
reqValue = eval(request.args.get('reqValue'))
sig = ''
str_request = ''
timestamp = ''
if project == 'meipai':
secret_key = "bdaefd747c7d594f"
request_value = sorted(reqValue.iteritems(),key = lambda asd:str(asd[]))
for key in request_value:
str_request = str_request + str(key[])
str_temp = path + str_request + secret_key + timestamp
m = md5.new()
m.update(str_temp)
tmp = m.hexdigest()
for i in range():
pos = i*
sig += tmp[pos+]+tmp[pos]
return sig if __name__ == '__main__':
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. iOS底层框架浅析

    1.简介 IOS是由苹果公司为iPhone.iPod touch和iPad等设备开发的操作系统. 2.知识点 iPhone OS(现在叫iOS)是iPhone, iPod touch 和 iPad 设 ...

  2. C# .NET UDP 形式调用 graylog,gelf

    -- 发送: GelfLogModel m = new GelfLogModel(); m.version = "1.1"; m.host = "128.0.14.39& ...

  3. CF1239A Ivan the Fool and the Probability Theory

    思路: 可以转化为“strip”(http://tech-queries.blogspot.com/2011/07/fit-12-dominos-in-2n-strip.html)问题.参考了http ...

  4. 洛谷 题解 UVA12661 【有趣的赛车比赛 Funny Car Racing】

    [题意] 在一个赛车比赛中,赛道有\(n(n<=300)\)个交叉点和\(m(m<=50000)\)条单向道路.有趣的是,每条道路都是周期性关闭的.每条道路用5个整数\(u,v,a,b,t ...

  5. 任务调度之Quartz.Net基础

    最近公司要求将之前的系统设计文档补上,于是大家就都被分配了不同的任务,紧锣密鼓的写起了文档来.发现之前项目中使用了Quartz.Net来做一些定时任务的调度,比如定时的删除未支付的订单,定时检查支付状 ...

  6. QT 源码分析--1

    Ref: http://blog.sina.com.cn/s/blog_6e80f1390100qoc0.html 安装qt之后(我使用的是online自动安装),安装目录下有\5.10.1\Src\ ...

  7. LeetCode 53. 最大子序和(Maximum Subarray)

    53. 最大子序和 53. Maximum Subarray 题目描述 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. LeetCode53. M ...

  8. 024 Android 自定义样式对话框(AlertDialog)

    1.AlertDialog介绍 AlertDialog并不需要到布局文件中创建,而是在代码中通过构造器(AlertDialog.Builder)来构造标题.图标和按钮等内容的. 常规使用步骤(具体参见 ...

  9. [转帖]微软 SQ1 参数一览:8 核 Kryo 495,Adreno 685 GPU

    微软 SQ1 参数一览:8 核 Kryo 495,Adreno 685 GPU http://www.myzaker.com/article/5d989ef68e9f0977765e5506/ 微软发 ...

  10. [转帖]java架构之路-(面试篇)JVM虚拟机面试大全

    java架构之路-(面试篇)JVM虚拟机面试大全 https://www.cnblogs.com/cxiaocai/p/11634918.html   下文连接比较多啊,都是我过整理的博客,很多答案都 ...