Python 什么';“使用”的区别是什么;c、 fetchall();而不是仅仅分配;c、 执行(选择…)到变量?

Python 什么';“使用”的区别是什么;c、 fetchall();而不是仅仅分配;c、 执行(选择…)到变量?,python,sql,select,fetchall,Python,Sql,Select,Fetchall,我很确定,在大多数情况下,它们在功能上是相同的,但我想知道,在某些情况下,它们是否是相同的,以及引擎盖下发生了什么使其如此 例如: c.execute("""SELECT * FROM players WHERE team = ?;"""), (team_name,)) results = c.fetchall() player_list = [] for player in results: player_list.append(player) vs 没有定义执行返回的内容:它可以

我很确定,在大多数情况下,它们在功能上是相同的,但我想知道,在某些情况下,它们是否是相同的,以及引擎盖下发生了什么使其如此

例如:

c.execute("""SELECT * FROM players WHERE team = ?;"""), (team_name,))
results = c.fetchall()

player_list = []
for player in results:
    player_list.append(player)
vs

没有定义执行返回的内容:它可以是生成器,可以是结果列表,也可以是表示结果的某个自定义对象,等等。它只承诺将进行数据库查询;没有定义结果的显示或可用方式

然而,
fetch\u all
方法被定义为返回一个“序列序列”,这意味着您可以立即在内存中获得实际的实例化结果。尤其是,迭代结果不会触发延迟的数据库连接来执行查询或获取更多结果

这样做的一个结果是,一个实现可以将您的两种方法定义为等效的,但不需要这样做

results = c.execute("""SELECT * FROM players WHERE team = ?;"""), (team_name,))

player_list = []
for player in results:
    player_list.append(player)