You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何根据system_code提取列表变量并循环执行对应SQL操作?

Python中如何根据system_code提取列表变量并循环执行对应SQL操作?

看起来你已经搭好了基础逻辑框架,接下来咱们把代码优化得更简洁、更易维护,完美适配不同system_code的场景~

首先你肯定能发现,针对ft_tb和bt_tb的SQL生成逻辑几乎一模一样,重复写两遍不仅麻烦,以后要改SQL格式还得改两处,很容易出错。最省心的做法是把这部分重复逻辑封装成函数,不管处理哪个列表,直接调用函数就行。

下面是优化后的完整代码,我给你一步步拆解说明:

system_code = 'Ind'

# 先根据system_code初始化对应的列表
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']

# 把重复的SQL生成逻辑抽成函数
def generate_sql_ops(table_list):
    # 你的列表刚好是3个元素,直接解包更直观,变量名也取了有意义的名字
    select_table, delete_table, app_filter = table_list
    print(f"SELECT * FROM {select_table} WHERE application = {app_filter}")
    print(f"DELETE FROM {delete_table} WHERE application = {app_filter}")

# 直接处理两个列表就好!前面已经根据system_code赋好对应值了,不用再重复判断
generate_sql_ops(ft_tb)
generate_sql_ops(bt_tb)

关键优化点说明:

  1. 封装函数减少重复代码:
    把生成SELECT和DELETE语句的逻辑放进generate_sql_ops函数后,以后不管是处理ft_tb、bt_tb,还是新增其他列表,只需要调用这个函数就行。要是以后要改SQL格式(比如加个过滤条件、调整占位符),只需要改函数里的代码,不用多处修改,省心又不容易出错。

  2. 简化元素提取+提升可读性:
    你的列表刚好是3个元素,直接用select_table, delete_table, app_filter = table_list解包比ft_tb[:3]更直观,而且变量名取了和业务相关的名字(比如原来的element_1改成select_table,一看就知道是用来生成SELECT语句的表),代码可读性瞬间提升。

  3. 去掉多余的system_code判断:
    前面已经根据system_code给ft_tb和bt_tb赋了对应的值,后面处理的时候直接调用函数就行,不用再写一遍if system_code == 'Ind',减少冗余判断,代码更清爽。

运行效果:

当system_code = 'Ind'时,代码会输出:

SELECT * FROM B_FT WHERE application = D_FT
DELETE FROM S_FT WHERE application = D_FT
SELECT * FROM B_BT WHERE application = D_BT
DELETE FROM S_BT WHERE application = D_BT

当system_code是其他值时,会自动使用T_FT、T_BT对应的列表生成SQL,完全符合你的需求~

如果以后需要扩展,比如再加一个ct_tb列表,只需要在前面的if-else里定义好ct_tb,然后在后面加一行generate_sql_ops(ct_tb)就搞定了,非常灵活!

备注:内容来源于stack exchange,提问作者nmr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:38:05