python小知識點彙總

2022-02-13 20:11:35 字數 3844 閱讀 6957

場景:自動化用例中需要構造資料,寫入redis

表中已有該primary_key的記錄,在現有基礎上更新字段

表中無該記錄,需要插入

# 請求傳入table欄位,db.table,context為要新增的字段等,一般為json或dict

def add_table(context,table):

# 獲取db table及primary_id

table_name =table

db_name = '

default

'#預設的庫名

if"."

intable:

db_name = table.split('

.')[0

] table_name = table.split('

.')[1

]

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)[0].get("

column_name")

# 若請求欄位有primary_key,則指定記錄操作

result = 0

context.text = eval(context.text) if context.text else

none

primary_value = context.text.get(primary_key) if (primary_key in context.text) else0if

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,表中已有對應記錄,現有基礎上更新

ifresult:

param = dict_to_set(context.text,","

) #param = urllib.unquote(urllib.parse.urlencode(context.text).replace("

&", ","

))

ifparam:

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 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

場景:要寫乙個mock服務或者其他

# -*- coding:utf-8 -*-

from

flask import flask

from

flask import request

import sys,json,md5

reload(sys)

sys.setdefaultencoding(

"utf-8")

'/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[1

]))

for key in

request_value:

str_request = str_request + str(key[1

]) str_temp = path + str_request + secret_key +timestamp

m = md5.new

() m.update(str_temp)

tmp =m.hexdigest()

for i in range(16

): pos = i*2

sig += tmp[pos+1]+tmp[pos]

return

sigif __name__ == '

__main__':

192.168.99.31

',port=8002)

小知識點彙總

1 為什麼乙個數的各位數之和可以被3整除時,這個數就可以被3整除 設乙個n位數number,從個位起每一位為a1 an 則number a1 a2 10 a3 10 2 an 10 n 1 1 先證必要性 如果number的各位數之和是3的倍數,則a1 a2 an 3k k為正整數 2 由 2 得a...

小知識點彙總

按位運算 按位取反,單目運算子,例 10 按位與 都為 1 則為 1 按位或 有 1 則為 1 按位異或 不一樣為 1 1 按位左移 乘2的1次方 1 按位右移 左邊補 符號位值,相當於除2的一次方 char 1 short 2 int 4 long 4 long long 8 double 8 f...

Cocos Creator小知識點彙總

hexobj.color new cc.color 255,255,255,60 如上設定透明度,會報錯should not set alpha via color set opacity please 正確設定透明度的方式為 hexobj.opacity 90 另外諸如hexobj.color.s...