一 写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. STM32驱动模数转换芯片ADS1120(PT100铂电阻测温度)第2篇

    1. 先看下原理图,原理图是电流从IDAC1流出,提供驱动,然后R(REF)这个电阻上的电压作为参考,读取AIN0和AIN1的电压,那么可以测量出来电阻值. 2. 上图是官方给出的参考,下图是我实际用 ...

  2. 【sql server inject】使用动态查询执行sql语句实例

    应某少年要求授权测试一个存在报错注入点的站点,可读取数据库名,但是sqlmap执行–os-shell选项就会莫名当掉: 分步骤测试了几次,发现xp_cmdshell是开启状态,但用sqlmap注入却无 ...

  3. Ubuntu 新装服务器部署流程

    1.设定时区 rm -f /etc/localtime cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 2.配置apt-get源 sed -i ...

  4. centos/Fedora/RHEL 安全设置

    centos/Fedora/RHEL •     整改方法: •     验证检查:  1.查看/etc/login.defs,访谈询问当前所设置的密码长度及更换周期:  2.查看/etc/pam.d ...

  5. 继400G后,QSFP-DD800G会是下一个风口吗?

    数据中心市场作为光通信企业的主要战场,近三年400G的热度一直都在持续,虽有Facebook F16继续选用100G架构给市场泼了一些冷水等插曲存在,但近日随着阿里巴巴硅光400G QSFP-DD D ...

  6. 微信小程序填坑,wx.request() 内调用setData()方法错误的解决办法

    再方法内添加一行代码,把this对象赋值给给一个变量供success()方法内调用 核心代码: var v = this.txt; 完整示例 abc:function(e){//该函数用于和后台交互 ...

  7. PDO 查询mysql返回字段int变为String型解决方法

    PDO 查询mysql返回字段int变为String型解决方法使用PDO查询mysql数据库时,执行prepare,execute后,返回的字段数据全都变为字符型. 例如id在数据库中是Int的,查询 ...

  8. jQuery (js 和 jQuery 的区别)

    js 和 jQuery 的区别  主要体现在Dom操作 (jq代表我找到的元素对象)找元素:    js:document.get...    jquery: $(选择器)设定:jq 是jquery对 ...

  9. 2019.12.12 Java的多线程&匿名类

    Java基础(深入了解概念为主) 匿名类 定义 Java匿名类很像局部或内联系,只是没有明细.我们可以利用匿名类,同时定义并实例化一个类.只有局部类仅被使用一次时才应该这么做. 匿名类不能有显式定义的 ...

  10. json数据的key的读取和替换

    读取json的key: /** * @Description: 递归读取所有的key * @Param: * @return: * @throws Exception * @author: hw * ...