1. 程式人生 > 其它 >python 根據傳進來的引數,動態拼接sql

python 根據傳進來的引數,動態拼接sql

根據傳進來的引數,動態拼接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)