В настоящее время я грубо форсирую запрос в таблицу 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)
В противном случае существует много избыточного кода, который отличается только именем столбца, что говорит мне, что я делаю это неправильно.