Python Sqlalchemy向多个同结构表插入相同数据的参数复用方法
实现方案
你只需要把统一的插入参数定义为字典类型,再通过Python的关键字参数解包语法**传递给各个映射表类即可,完全符合你期望的代码结构,具体实现如下:
# 统一定义待插入的数据集,键对应表的字段名,值对应要插入的内容 Sql_Data = { "Test": Test # 有其他需要统一插入的字段直接在该字典内追加即可,无需修改后续实例化逻辑 } # 实例化时用**语法解包字典,效果等价于你原先的逐个传参写法 test1 = Data_1(**Sql_Data) session.add(test1) test2 = Data_2(**Sql_Data) session.add(test2) test3 = Data_3(**Sql_Data) session.add(test3) session.commit()
可选优化方案
如果后续表的数量越来越多,还可以把所有表类放在列表中循环处理,进一步减少重复代码:
# 把所有结构一致的映射表类放在同一个列表 table_classes = [Data_1, Data_2, Data_3] # 统一插入参数 Sql_Data = {"Test": Test} # 循环实例化加添加到会话 for table_cls in table_classes: session.add(table_cls(**Sql_Data)) session.commit()
内容的提问来源于stack exchange,提问作者Shark00n
相关产品推荐
相关产品推荐

