目标是在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