为什么我的python for循环返回相同的第一个值X次,而不是唯一的值



我正在从Python查询Postgres数据库(熟悉的人可以使用nfldb),并希望将我的一个查询条件作为变量来简化我的数据收集。我正在使用的代码

import nfldb
db = nfldb.connect()
q = nfldb.Query(db)
for i in range (1,15):
    q.game(season_year=2015, season_type='Regular', week=i)
    q.player(full_name='Julian Edelman')
    print p.player.full_name, p.receiving_yds, p.receiving_tds

我预计这会返回每周的统计数据,但它会返回第一周的统计数据14次。当我将week = i更改为显式数字时,它会返回我所期望的统计数据。为什么会发生这种情况?

不熟悉nfldb的人很难回答您的问题,因为.game命名法是nfldb的一个特殊功能,可用于进一步筛选查询q

通过将查询范围缩小到一周,您就向nfldb授予了丢弃所有其他不合适数据的权限。因此,当你重复你的循环并要求下一周时,你要求的是你刚刚告诉nfldbq中丢弃的数据。

如果你想每周单独进行相同的查询,你需要将q = nfldb.Query(db)放入for循环中,以重置查询从数据库中所有可用数据开始的期望值。

import nfldb
db = nfldb.connect()
for i in range (1,15):
    q = nfldb.Query(db)
    q.game(season_year=2015, season_type='Regular', week=i)
    q.player(full_name='Julian Edelman')

不过,正如其他人所提到的,由于p突然出现,您在这个代码块中遗漏了一些内容。

最新更新