Вставка SQLAlchemy в таблицу с передачей имени таблицы в виде строки - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть словарь с 20 элементами.Ключи на самом деле являются именами таблиц, а значения - это отдельные значения, которые нужно поместить в 20 отдельных таблиц.Как я могу сделать это с помощью SQLAlchemy без записи 20 операторов if?

Пример:

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))

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете посмотреть таблицу в Base.metadata.tables и затем вставить:

for tbl, value in mydict.items():
    stmt = Base.metadata.tables[tbl].insert().values(value=value)
    session.execute(stmt)
...