一 写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. 如何修改WAMPServer默认的网站路径地址

    通常,我们安装WAMPServer集成的PHP开发环境之后,默认的网站路径地址是其安装目录下子文件夹:"wamp/www/".那么我们怎么修改网站地址到自己指定的路径呢?本篇经验将 ...

  2. Selenium登录126邮箱,chrome定位不到账号输入框解决办法

    使用id定位Message: no such element: Unable to locate element: {"method":"id","s ...

  3. C# .NET 杀进程

    procName 是进程名,不带.exe . private bool IsAppKill(String procName) { try { ; System.Diagnostics.Process[ ...

  4. Python爬取网址中多个页面的信息

    通过上一篇博客了解到爬取数据的操作,但对于存在多个页面的网址来说,使用上一篇博客中的代码爬取下来的资料并不完整.接下来就是讲解该如何爬取之后的页面信息. 一.审查元素 鼠标移至页码处右键,选择检查元素 ...

  5. Centos 更改MySQL5.7数据库目录位置

    原文地址:https://blog.csdn.net/zyw_java/article/details/78512285 Centos7.3 安装Mysql5.7并修改初始密码 基于 CentOS M ...

  6. [DFS]排队(间隔排列)-C++

    Description 小Q是班长.在校运动会上,小Q班要进行队列表演.小Q要选出2*N名同学编队,每人都被编上一个号,每一个从1到N的自然数都被某2名同学佩戴,现在要求将他们排成一列,使两个编号为1 ...

  7. go安装以及使用gomod、 goland设置

    一. 安装go 1. 官网下载go安装包,按照指引安装即可, 2. 推荐使用go1.12版本 ,它新增加了go mod用来管理依赖,并且不需要我们再刻意设置gopath环境变量 3. 默认go会将$H ...

  8. 服务注册与发现—Eureka

    一:Eureka简介 Eureka的意思是(因找到某物,尤指问题的答案而高兴) 我发现了,我找到了,作为一个服务注册和发现中心的名字确实很贴切啊. Eureka包含两个组件,Eureka Server ...

  9. xsy 2412【BZOJ4569】【Scoi2016】萌萌哒

    Description Description 一个长度为n的大数,用S1S2S3...Sn表示,其中Si表示数的第i位,S1是数的最高位,告诉你一些限制条件,每个条件表示为四个数,l1,r1,l2, ...

  10. django使用pyecharts(3)----django加入echarts_定时全量更新

    三.Django 前后端分离_定时全量更新图表 1.安装 djangorestframework linux pip3 install djangorestframework windows pip ...