我正在从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
授予了丢弃所有其他不合适数据的权限。因此,当你重复你的循环并要求下一周时,你要求的是你刚刚告诉nfldb
从q
中丢弃的数据。
如果你想每周单独进行相同的查询,你需要将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
突然出现,您在这个代码块中遗漏了一些内容。