当我对我的查询调用limit
时,我得到了不准确的结果,我不确定是什么导致了它
型号:
class Voter(db.Model):
histories = db.relationship('VoterHistory', backref='voter', lazy='dynamic')
ncid = db.Column(db.String(80),unique=True)
class VoterHistory(db.Model):
voter_ncid = db.Column(db.String(80), db.ForeignKey('voter.ncid'))
election_lbl = db.Column(db.String(280))
范例
q1 = Voter.query.filter_by(birth_age='25')
q2 = db.and_(Voter.histories.any(VoterHistory.election_lbl == '11/03/2015'),
Voter.histories.any(VoterHistory.election_lbl == '03/15/2016'))
res= q1.join(Voter.histories).filter(q2)
如果我在res
上调用.count
,我会得到大约4000个结果。如果我这样做res.limit(3000).all()
,我会得到大约700个结果
这里发生了什么事,我该怎么解决?我正在尝试获取3000Voter
个对象
这里有两件事在起作用,它们一起似乎会产生不一致的结果:
limit
应用于SQL
查询,实际上限制了查询返回的行数sqlalchemy
将删除重复的实例李>在您的例子中,将限制设置为3000确实会将从SQL返回的行数限制为3000行,但是如果在这3000行中
Voter
类只有700行distinct,那么只会返回700个这样的实例在您的例子中
.join(Voter.histories)
看起来是从数据库返回的行数和Voter
实例数之间引入了这种非对应关系我希望这是清楚的。如果没有,我很乐意提供一个例子
相关问题 更多 >
编程相关推荐