我有以下查询:
self.cursor.execute("SELECT platform_id_episode, title, from table WHERE asset_type='movie'")
有没有办法直接返回结果?目前我的效率很低:
r = self.cursor.fetchall()
num_results = len(r)
答案 0 :(得分:3)
如果您实际上不需要结果, * 不要向MySQL询问;只需使用COUNT
: **
self.cursor.execute("SELECT COUNT(*) FROM table WHERE asset_type='movie'")
现在,您将返回一行,其中包含一列,其值为您的其他查询将返回的行数。
请注意,我忽略了您的特定列,只是COUNT(*)
。 COUNT(platform_id_episode)
也是合法的,但它表示具有非NULL platform_id_episode
值的已找到行的数量; COUNT(*)
是已完成停止的行数。 ***
*如果您 需要结果......那么,您必须致电fetchall()
或等同于获取结果,所以我不会看到问题。< /子>
**如果您以前从未在SQL中使用过聚合函数,请务必查看该页面上的一些示例;你可能从未意识到你可以如此简单(和有效)地做这样的事情。
***如果有人教你&#34;永远不要在*
&#34;中使用SELECT
,那么,这是一个很好的建议,但它是&#39 ;这里不相关。 SELECT *
的问题在于,它会在您的结果集中以随机顺序对所有列进行垃圾邮件,而不是按照您需要的顺序实际需要的列。 SELECT COUNT(*)
没有做到这一点。