代码之家  ›  专栏  ›  技术社区  ›  nmr

从列表中提取变量并运行循环

  •  0
  • nmr  · 技术社区  · 1 年前

    我有一个类似下面的场景 Python .

    内容 run_main.py 在下面

    system_code = 'Ind'
    
    if system_code == 'Ind':
        ft_tb = ['B_FT', 'S_FT', 'D_FT']
        bt_tb = ['B_BT', 'S_BT', 'D_BT']
    else:
        ft_tb = ['T_FT', 'T_FT', 'T_FT']
        bt_tb = ['T_BT', 'T_BT', 'T_BT']
    

    现在,我想基于以下内容对每个列表循环运行以下代码 system_code

    例如:

    if system_code == Ind
        
        # ft_tb list
        element_1, element_2, element_3 = ft_tb[:3]
        
        print("SELECT * FROM {} WHERE application = {}".format(element_1, element_3))
        print("DELETE FROM {} WHERE application = {}".format(element_2, element_3))
                
        # bt_tb list
        element_1, element_2, element_3 = bt_tb[:3]
    
        print("SELECT * FROM {} WHERE application = {}".format(element_1, element_3))
        print("DELETE FROM {} WHERE application = {}".format(element_2, element_3))
        
    
            
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Barmar    1 年前

    使用列表而不是多个变量,然后可以迭代它。

    if system_code == 'Ind':
        sql_params = [
            {'select_tbl': 'B_FT', 'delete_tbl': 'S_FT', 'app': 'D_FT'},
            {'select_tbl': 'B_BT', 'delete_tbl': 'S_BT', 'app': 'D_BT'}
        ]
    else:
        sql_params = [
            {'select_tbl': 'T_FT', 'delete_tbl': 'T_FT', 'app': 'T_FT'},
            {'select_tbl': 'T_BT', 'delete_tbl': 'T_BT', 'app': 'T_BT'}
        ]
    
    if system_code == Ind:
        for p in sql_params:
            print(f"SELECT * FROM {p['select_tbl']} WHERE application = '{p['app']}'")
            print(f"DELETE * FROM {p['delete_tbl']} WHERE application = '{p['app']}'")