我有一本有20个项目的字典。键实际上是表名,值是单个值,需要进入20个单独的表中。 如何在不编写20条if语句的情况下使用SQLAlchemy做到这一点?
示例:
class Table1(Base):
__tablename__ = "table1"
id = Column(Integer(), primary_key=True)
value = Column(String())
class Table2(Base):
__tablename__ = "table2"
id = Column(Integer(), primary_key=True)
value = Column(String())
class Table3(Base):
__tablename__ = "table3"
id = Column(Integer(), primary_key=True)
value = Column(String())
...
class Table20(Base):
__tablename__ = "table20"
id = Column(Integer(), primary_key=True)
value = Column(String())
mydict = {
'table1': 'some value'
'table2': 'some value'
'table3': 'some value'
...
'table20': 'some value'
}
现在我正在使用20条if语句:
for key, value in mydict.items():
if key == 'table1':
session.add(Table1(value=value))
if key == 'table2':
session.add(Table2(value=value))
if key == 'table3':
session.add(Table3(value=value))
...
if key == 'table20':
session.add(Table20(value=value))
答案 0 :(得分:0)
您可以在Base.metadata.tables
中查找表格,然后插入:
for tbl, value in mydict.items():
stmt = Base.metadata.tables[tbl].insert().values(value=value)
session.execute(stmt)