mysqldb总是将整个查询结果拉入一个块,即使我只是做一个fetchone?

Aar*_*ers 5 python mysql

所以,如果我这样做

 import MySQLdb
 conn = MySQLdb.connect(...)
 cur = conn.cursor()
 cur.execute("SELECT * FROM HUGE_TABLE")
 print "hello?"
 print cur.fetchone() 
Run Code Online (Sandbox Code Playgroud)

在我看来,MySQLdb在进入"打印"之前获取了整个巨大的表.我之前认为它在后台做了某种"光标/状态"的懒惰检索,但它看起来不像我.这是正确的吗?如果是这样,因为它必须是这样的,还是由于MySQL线协议的限制?这是否意味着java/hibernate的行为方式相同?

我想我需要使用"限制1"MySQL条款和亲戚,如果我想要通过一个大表而不是一次性拉入整个事物?或没有?提前致谢.

Chu*_*ose 0

这在我使用过的所有其他语言中都是正确的。fetchone 仅检索结果集的第一行,在本例中是整个数据库。它更像是一种方便的方法,如果您知道只有一个结果或者您只关心第一个结果,那么它的设计会更容易使用。