def setup_loader(self, instance):
def lazyload():
clause = sql.and_()
try:
pk = self.parent.pks_by_table[self.columns[0].table]
except KeyError:
pk = self.columns[0].table.primary_key
for primary_key in pk:
attr = self.parent._getattrbycolumn(instance, primary_key)
if not attr:
return None
clause.clauses.append(primary_key == attr)
if self.group is not None:
groupcols = [p for p in self.parent.props.values() if isinstance(p, DeferredColumnProperty) and p.group==self.group]
row = sql.select([g.columns[0] for g in groupcols], clause, use_labels=True).execute().fetchone()
for prop in groupcols:
if prop is self:
continue
instance.__dict__[prop.key] = row[prop.columns[0]]
objectstore.global_attributes.create_history(instance, prop.key, uselist=False)
return row[self.columns[0]]
else:
return sql.select([self.columns[0]], clause, use_labels=True).scalar()
return lazyload
评论列表
文章目录