PonyORM从类实体问题检索对象

时间:2019-10-23 13:54:43

标签: python postgresql ponyorm

假设我有这两类:

class TeamMember(db.Entity):
    member_id= PrimaryKey(int, auto=True)
    name = Required(str)
    team = Required('Team')

class Team(db.Entity):
    team_id= PrimaryKey(int, auto=True)
    name = Required(str)
    team_members = Set(TeamMember)

我想选择特定团队(例如team_id == 1)中的所有TeamMembers。查询看起来像这样(C1):

TeamMember.select(lambda member: member.team == 1)[:]

如果我这样写,就会在下面出现错误:

Incomparable types 'Team' and 'int' in expression: member.team == 1

另一方面,我可以编写此代码,它将起作用(C2):

TeamMember.select(lambda member: member.team == Team[1])[:]

但是,我不想这样写它,因为我想创建对每个Entity类都适用的泛型函数:

def get_instances_from_db(classname, classname_var, var_value):
    """
    :param classname:  name of class
    :param classname_var: name of class variable to search by
    :param var_value: value of class variable
    :return:
    """
    return classname.select(lambda v: getattr(v, classname_var) == var_value)[:]

上面的方法将适用于与其他类Entity无关的变量,例如:

members = get_instances_from_db(TeamMember, "name", "some_team_member_name")

最后,我的问题是:是否可以将查询设置为按整数而不是按Entity对象进行搜索。或者,是否可以使用“ C1”行?

希望我已经足够清楚了! :)

0 个答案:

没有答案