Как использовать переменную для определения возможных столбцов в таблице SQLAlchemy? - PullRequest
0 голосов
/ 08 февраля 2020

В настоящее время я грубо форсирую запрос в таблицу SQLite с использованием SQLAlchemy, например, в следующем примере:

def get_classes(race):
    if race == "Hill Dwarf":
        classes = session.query(AcceptableCharClass.Char_Class).filter(AcceptableCharClass.Dwarf_Hill)
    elif race == "Gray Dwarf":
        classes = session.query(AcceptableCharClass.Char_Class).filter(AcceptableCharClass.Dwarf_Gray)
    elif race == "Mountain Dwarf":
        classes = session.query(AcceptableCharClass.Char_Class).filter(AcceptableCharClass.Dwarf_Mountain)

SQLAlchemy для таблицы:

class AcceptableCharClass(Base):
    """Create the SQLAlchemy structure for the existing DB"""
    __tablename__: str = "Class_by_Race"  # Race vs. Class
    Char_Class: str = Column(String, primary_key=True)
    Dwarf_Gray: bool = Column(Boolean, default=False)
    Dwarf_Hill: bool = Column(Boolean, default=False)
    Dwarf_Mountain: bool = Column(Boolean, default=False)

Вместо того, чтобы вручную вызывать каждый столбец в таблице AcceptableCharClass, есть ли способ передать имя столбца как переменную? Что-то вроде:

def get_classes(race):
    classes = session.query(AcceptableCharClass.Char_Class).filter(AcceptableCharClass.race)

В противном случае существует много избыточного кода, который отличается только именем столбца, что говорит мне, что я делаю это неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...