根據傳進來的參數,動態拼接sql,可用於實現一個方法,有些字段不確定,又用到的情況,如查詢,三個查詢條件,有的時候只用到一個查詢條件,其他用不到則不需要拼接


def show_runjob_detail(self, conditionList, valueList, fieldlist, rows):
'''
根據傳進來的列名、具體的值和返回的字段的個數,動態查詢定時任務的信息
param:conditionList:要查詢的具體的列名
param:valueList:要查詢具體列名的值
param:fieldlist:select語句要查詢出來的表的字段
param:rows:行數
'''
fieldlist = []
if len(fieldlist) == 0:
fieldlist = ['id', 'job_id', 'test_suite_id', 'name', 'runtime', 'status']
search_value = fieldlist[0]
log.log().logger.info(fieldlist)
for i in range(1, len(fieldlist)):
# 將傳進來的fieldlist拼接起來
search_value = search_value + ','+fieldlist[i]
condition = ' status not in (5) '
for i in range(len(conditionList)):
if len(valueList[i]):
# 循環遍歷列名和具體的值,有具體的value值,繼續拼接sql
condition = condition + ' and ' + str(conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'
sql = 'select ' + str(search_value) + ' from test_run_job where ' + str(condition) \
+ ' order by id desc limit '+str(rows)
