Инициализация sql-запроса в качестве класса данных

#python #sql #auto-generate #python-dataclasses

Вопрос:

Цель состоит в том, чтобы получить выбранные столбцы в SQL на основе некоторой классификации полей вручную, например

 from dataclasses import dataclass


@dataclass
class Q:
    fruits = ('taste', 'color', 'shine')
    vege = ('is_green', 'color', 'juiceable')
    meat = ('is_white', 'is_dark', 'is_red', 'meat_name')
    carbs = ('is_refined', 'gi')

    @static_method
    def get_fields(self, add_fruits=False, add_vege=False, add_meat=False, add_carbs=False):
         fields = set()
         fields.update(self.fruits) if add_fruits else None
         fields.update(self.vege) if add_vege else None
         fields.update(self.meat) if add_meat else None
         fields.update(self.carbs) if add_carbs else None
         return sorted(",".join(sorted(fields)))


print(f"SELECT {Q.get_fields(add_fruits=True, add_vege=True)} from food_features")
 

Учитывая большой список категорий полей в Q объекте, как нам избежать жесткого кода в .get_fields функции?

 fields.update(self._field_name_) if add_field_name else None